找出JQuery是否选中了单选按钮?


584

我可以将单选按钮设置为选中状态,但是我想做的是设置一种“侦听器”,当选中某个单选按钮时会激活它。

以下面的代码为例:

$("#element").click(function()
{ 
    $('#radio_button').attr("checked", "checked");
});

它添加了一个选中的属性,一切都很好,但是我将如何添加警报。例如,在没有单击功能的情况下选中单选按钮时,会弹出该窗口吗?



1
相关Monitoring when a radio button is unchecked stackoverflow.com/questions/5824639/...
阿德里安成为

Answers:


1082
$('#element').click(function() {
   if($('#radio_button').is(':checked')) { alert("it's checked"); }
});

答对了!谢谢大卫。因此,我是否必须调用一个动作(单击等)以显示警报?有没有办法做到这一点而无需单击?
Keith Donegan'2

3
这不能解决“没有单击功能的帮助”,对吗?
Znarkus

5
@Znarkus:OP似乎很满意。您会说您自己使用的('#radio_button').click是没有click吗?
David Hedlund

3
@David第二行应该是if ($('#radio_button').is(':checked'))) { alert("it's checked"); }-您忘记了jQuery $符号,然后需要将其包装在更多的括号中。
zuallauz 2011年

2
@zua:你是对的!它甚至有一个语法错误,和以前一样(括号不匹配)。已修复
David Hedlund

154

如果您有一组具有相同名称属性的单选按钮,并且在提交或某些事件后要检查是否选中了这些单选按钮之一,则可以通过以下代码简单地完成此操作:

$(document).ready(function(){
  $('#submit_button').click(function() {
    if (!$("input[name='name']:checked").val()) {
       alert('Nothing is checked!');
        return false;
    }
    else {
      alert('One of the radio buttons is checked!');
    }
  });
});

资源

jQuery API参考


这对我不起作用。如果我警报($(“ input [@ name ='shipping_method']:checked”)。val()); 即使未选中单选按钮,它仍然为我提供值。
AndrewC

1
注意:如果您有多个带有相同名称的单选按钮组的表单,则需要确保仅检查那些提交表单的表单。一种选择是在表单上使用find方法: $('#myform').submit(function(event){ if (!$(this).find("input[name='name']:checked").val()) {
Benjamin 2015年

41

当Parag的解决方案给我带来错误时,这是​​我的解决方案(结合David Hedlund和Parag的解决方案):

if (!$("input[name='name']").is(':checked')) {
   alert('Nothing is checked!');
}
else {
   alert('One of the radio buttons is checked!');
}

这对我来说很好!


32

您必须绑定复选框的click事件,因为change事件在IE中不起作用。

$('#radio_button').click(function(){
    // if ($(this).is(':checked')) alert('is checked'); 
    alert('check-checky-check was changed');
});

现在,当您以编程方式更改状态时,还必须触发此事件:

$('#radio_button').attr("checked", "checked");
$('#radio_button').click();

18

//通过类检查

if($("input:radio[class='className']").is(":checked")) {
     //write your code         
}

//检查名字

if($("input:radio[name='Name']").is(":checked")) {
         //write your code         
}

//检查数据

if($("input:radio[data-name='value']").is(":checked")) {
         //write your code         
}


10

解决方案将很简单,因为当选中某个单选按钮时,您只需要“侦听器”即可。做到:-

if($('#yourRadioButtonId').is(':checked')){ 
// Do your listener's stuff here. 
}

6

如果您不想单击功能,请使用Jquery更改功能

$('#radio_button :checked').live('change',function(){
alert('Something is checked.');
});

这应该是您正在寻找的答案。如果您使用的Jquery版本高于1.9.1,请尝试使用on,因为live函数已被弃用。


6

...谢谢大家...我需要的只是选中的单选按钮的“值”,其中每个单选按钮都有一个不同的ID ...

 var user_cat = $("input[name='user_cat']:checked").val();

为我工作...


最有用的答案
amal50

5

使用所有类型的单选按钮和浏览器

if($('#radio_button_id')[0].checked) {
   alert("radiobutton checked")
}
else{
   alert("not checked");
}

在这里工作


3

动态生成的单选按钮检查单选获取值

$("input:radio[name=radiobuttonname:checked").val();

更改时动态单选按钮

$('input[name^="radioname"]').change(function () {if (this.value == 2) { }else{}});

3

$('。radio-button-class-name')。is('checked')不适用于我,但是下面的代码运行良好:

    if(typeof $('.radio-button-class-name:checked').val() !== 'undefined'){
     // radio button is checked
    }

1
由于您将其用于类而不是ID,因此它将返回一个节点列表,而不是元素。$('.radio-button-class-name').first().is(':checked')应该工作了。
Levi Johansen



0

jQuery仍然很流行,但是如果您希望没有依赖项,请参见下文。短路和清除功能,用于确定在ES-2015上是否选中了单选按钮:

function getValueFromRadioButton( name ){
  return [...document.getElementsByName(name)]
         .reduce( (rez, btn) => (btn.checked ? btn.value : rez), null)
}

console.log( getValueFromRadioButton('payment') );
<div>  
  <input type="radio" name="payment" value="offline">
  <input type="radio" name="payment" value="online">
  <input type="radio" name="payment" value="part" checked>
  <input type="radio" name="payment" value="free">
</div>


-3
$("#radio_1").prop("checked", true);

对于1.6之前的jQuery版本,请使用:

$("#radio_1").attr('checked', 'checked');

2
将设置checked属性的值,而不是查询它。
Marc.2377
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.