我有两个单选按钮,希望发布所选按钮的值。如何使用jQuery获取值?

我可以得到所有这些:

$("form :radio")

我如何知道选择了哪一个?


当前回答

您可以将:checked选择器与收音机选择器一起使用。

 $("form:radio:checked").val();

其他回答

下面是我如何填写表格并处理已检查的收音机的获取。

使用名为myForm的表单:

<form id='myForm'>
    <input type='radio' name='radio1' class='radio1' value='val1' />
    <input type='radio' name='radio1' class='radio1' value='val2' />
    ...
</form>

从表单中获取值:

$('#myForm .radio1:checked').val();

如果您不发布表单,我会通过以下方式进一步简化:

<input type='radio' class='radio1' value='val1' />
<input type='radio' class='radio1' value='val2' />

然后获取检查值变为:

    $('.radio1:checked').val();

在输入上有类名可以让我轻松地设置输入的样式。。。

$("input:radio:checked").val();

此解决方案不需要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足够简单明了。

如果您已经引用了单选按钮组,例如:

var myRadio = $("input[name=myRadio]");

使用filter()函数,而不是find()。(find()用于查找子元素/子元素,而filter()用于搜索所选内容中的顶级元素。)

var checkedValue = myRadio.filter(":checked").val();

注意:这个答案最初是在纠正另一个建议使用find()的答案,但后来似乎有所改变。find()对于已经引用了容器元素但没有引用单选按钮的情况仍然有用,例如:

var form = $("#mainForm");
...
var checkedValue = form.find("input[name=myRadio]:checked").val();

如果在一个表单上只有一组单选按钮,jQuery代码如下所示:

$( "input:checked" ).val()