我有两个单选按钮,希望发布所选按钮的值。如何使用jQuery获取值?
我可以得到所有这些:
$("form :radio")
我如何知道选择了哪一个?
我有两个单选按钮,希望发布所选按钮的值。如何使用jQuery获取值?
我可以得到所有这些:
$("form :radio")
我如何知道选择了哪一个?
当前回答
在JSF生成的单选按钮(使用<h:selectOneRadio>标记)中,可以执行以下操作:
radiobuttonvalue = jQuery("input[name='form_id\:radiobutton_id']:checked").val();
其中selectOneRadio ID是radiobutton_ID,表单ID是form_ID。
如图所示,请务必使用name而不是id,因为jQuery使用这个属性(名称由JSF自动生成,类似于控件id)。
其他回答
我编写了一个jQuery插件,用于设置和获取单选按钮值。它还尊重他们身上的“变化”事件。
(function ($) {
function changeRadioButton(element, value) {
var name = $(element).attr("name");
$("[type=radio][name=" + name + "]:checked").removeAttr("checked");
$("[type=radio][name=" + name + "][value=" + value + "]").attr("checked", "checked");
$("[type=radio][name=" + name + "]:checked").change();
}
function getRadioButton(element) {
var name = $(element).attr("name");
return $("[type=radio][name=" + name + "]:checked").attr("value");
}
var originalVal = $.fn.val;
$.fn.val = function(value) {
//is it a radio button? treat it differently.
if($(this).is("[type=radio]")) {
if (typeof value != 'undefined') {
//setter
changeRadioButton(this, value);
return $(this);
} else {
//getter
return getRadioButton(this);
}
} else {
//it wasn't a radio button - let's call the default val function.
if (typeof value != 'undefined') {
return originalVal.call(this, value);
} else {
return originalVal.call(this);
}
}
};
})(jQuery);
将代码放在任何位置以启用加载项。那就享受吧!它只是重写默认的val函数而不破坏任何东西。
你可以访问这个jsFiddle来尝试它的实际操作,看看它是如何工作的。
不停摆弄
在我的例子中,我在一个表单中有两个单选按钮,我想知道每个按钮的状态。以下内容适用于我:
//获取单选按钮值console.log(“radio1:”+$('input[id=radio1]:checked','#toggle form').val());console.log(“radio2:”+$('input[id=radio2]:checked','#toggle form').val());<script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js“></script><form id=“toggle form”><div id=“radio”><input type=“radio”id=“radio1”name=“radio“checked=”checked“/><label for=”radio1“>绘制单个</label><input type=“radio”id=“radio2”name=“radio”/><label for=“radio2”>全部绘制</label></div></form>
在JSF生成的单选按钮(使用<h:selectOneRadio>标记)中,可以执行以下操作:
radiobuttonvalue = jQuery("input[name='form_id\:radiobutton_id']:checked").val();
其中selectOneRadio ID是radiobutton_ID,表单ID是form_ID。
如图所示,请务必使用name而不是id,因为jQuery使用这个属性(名称由JSF自动生成,类似于控件id)。
此解决方案不需要jQuery。
const RADIO_NAME = "radioName";
const radios = Array.from(document.getElementsByName(RADIO_NAME));
const checkedRadio = radios.filter(e=>e.checked);
这使用jQuery:
const radios = Array.from($(`[name=${RADIO_NAME}`));
const checkedRadio = radios.filter(e=>e.checked);
jQuery添加了这里不需要的额外抽象层。
您还可以使用:
const radios = Array.from(document.querySelectorAll(`[name=${RADIO_NAME}`));
const checkedRadio = radios.filter(e=>e.checked)[0];
但getElementsByName足够简单明了。
使用此。。
$("#myform input[type='radio']:checked").val();