如何使用jQuery检查单选按钮?


889

我尝试用jQuery检查单选按钮。这是我的代码:

<form>
    <div id='type'>
        <input type='radio' id='radio_1' name='type' value='1' />
        <input type='radio' id='radio_2' name='type' value='2' />
        <input type='radio' id='radio_3' name='type' value='3' /> 
    </div>
</form>

和JavaScript:

jQuery("#radio_1").attr('checked', true);

不起作用:

jQuery("input[value='1']").attr('checked', true);

不起作用:

jQuery('input:radio[name="type"]').filter('[value="1"]').attr('checked', true);

不起作用:

你还有其他主意吗?我想念什么?


1
感谢您的回复!我发现了问题。实际上,实现此目的的两种第一种方法正在起作用。关键是我使用jqueryUI将一组3个单选按钮转换为使用以下代码的按钮集:jQuery(“#type”)。buttonset(); 但在检查收音机之前进行此更改会损坏收音机(不知道为什么)。最后,我在检查广播后放了按钮设置呼叫,它运行良好。
亚历克西斯

使用$(“ input:radio [value ='2']”)。prop('checked',true); 此处链接freakyjolly.com/...
代码间谍

Answers:


1469

对于等于或大于(> =)1.6的jQuery版本,请使用:

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

对于(<)1.6之前的版本,请使用:

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

提示:之后,您可能还想致电click()change()单击单选按钮。查看评论以获取更多信息。


80
在jQuery 1.9或更高版本中,此解决方案无效。使用$(“#radio_1”)。prop(“ checked”,true); 代替。
installero

12
实际上,@ Installero prep从1.6开始是正确的,从1.9开始是必需的。
John Dvorak

42
添加.change()到末尾以触发页面上的任何其他事件将很有帮助。
Foxinni 2013年

13
重新排列此答案可能很明智,这样.prop显然是正确的答案,并且该.attr方法是jQuery <1.6的注释。
Patrick

22
如果您想正确更新广播组中的其他单选按钮,请使用$("#radio_1").prop("checked", true).trigger("click");
Paul LeBeau

256

尝试这个。

在此示例中,我以其输入名称和值作为目标

$("input[name=background][value='some value']").prop("checked",true);

提提您:在使用多字值的情况下,它也会因撇号而起作用。


5
这可能是最好的方法,其他人则倾向于坚持使用它,从而使该功能第二次无法使用,而效果却与预期的一样
Roy Toledo 2013年

发现由于只能选择一个,因此$('input [name =“ type”]:checked')。val()也是不错的选择。
huggie 2014年

请详细说明。总体思路是检查一个单选按钮,以其属性(名称和值,可选)对其进行寻址。我不确定您要完成什么,因为仅使用name属性和:checked伪选择器。而且您也正在检索val,这很令人困惑。谢谢
Vladimir Djuricic 2014年

2
我本来打算在我的所有收音机中添加一个“ id”,但是这种方法可以正常工作。但是请记住,当您的值是多字(例如“紫色”)时,您需要添加适当的引号: $("input[name=background][value='color purple']").prop("checked",true);
Tristan Tao

3
比所选答案好得多!正是我想要的。这是通用的,而所选答案是特定的。很好,谢谢。
GarbageGigo 2015年

96

jQuery 1.6中添加的另一个功能prop()达到了相同的目的。

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

13
attr('checked', true)停止工作对我来说与jQuery 1.9,这是解决方案!
Pascal

1
似乎prop("checked", true)正在工作,attr('checked', 'checked')但不起作用
Tomasz Kuter 2013年

@TomaszKuter我建议使用prop(),因为检查的DOM属性是应该影响行为的对象-但它的奇怪之处-在这种小提琴(jsfiddle.net/KRXeV)中attr('checked', 'checked')实际上起作用x)
jave.web


81

简短易读的选项:

$("#radio_1").is(":checked")

它返回true或false,因此您可以在“ if”语句中使用它。


5
谢谢!这是我一直在寻找的,但是(FYI)OP询问如何设置单选按钮,而不是获取值。(“检查”一词使这个问题令人困惑。)
班普尔

31

尝试这个。

要使用“ 值”检查单选按钮,请使用此选项。

$('input[name=type][value=2]').attr('checked', true); 

要么

$('input[name=type][value=2]').attr('checked', 'checked');

要么

$('input[name=type][value=2]').prop('checked', 'checked');

要使用ID检查单选按钮,请使用此功能。

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

要么

$('#radio_1').prop('checked','checked');


13

$.prop更好的方法是:

$(document).ready(function () {                            
    $("#radio_1").prop('checked', true);        
});

您可以像下面这样测试它:

$(document).ready(function () {                            
    $("#radio_1, #radio_2", "#radio_3").change(function () {
        if ($("#radio_1").is(":checked")) {
            $('#div1').show();
        }
        else if ($("#radio_2").is(":checked")) {
            $('#div2').show();
        }
        else 
            $('#div3').show();
    });        
});

9

你所要做的

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

这就是HTML属性


7

如果属性name不起作用,请不要忘记它id仍然存在。此答案适用于希望将id此处的操作作为目标的人。

$('input[id=element_id][value=element_value]').prop("checked",true);

因为财产name对我不起作用。确保您没有将其包围,id并且name使用双/单引号引起来。

干杯!



6

尝试这个

$(document).ready(function(){
    $("input[name='type']:radio").change(function(){
        if($(this).val() == '1')
        {
          // do something
        }
        else if($(this).val() == '2')
        {
          // do something
        }
        else if($(this).val() == '3')
        {
          // do something
        }
    });
});

6

出乎意料的是,尽管有评论,但是最受欢迎和接受的答案忽略了触发适当事件。确保调用 .change(),否则所有“更改时”绑定都将忽略此事件。

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

5
$("input[name=inputname]:radio").click(function() {
    if($(this).attr("value")=="yes") {
        $(".inputclassname").show();
    }
    if($(this).attr("value")=="no") {
        $(".inputclassname").hide();
    }
});

5

获得价值:

$("[name='type'][checked]").attr("value");

设定值:

$(this).attr({"checked":true}).prop({"checked":true});

单选按钮单击添加属性选中:

$("[name='type']").click(function(){
  $("[name='type']").removeAttr("checked");
  $(this).attr({"checked":true}).prop({"checked":true});
});

5

我们应该告诉它是一个radio按钮,因此请尝试以下代码。

$("input[type='radio'][name='userRadionButtonName']").prop('checked', true);

5

万一有人在尝试使用jQuery UI来实现此目的,您还需要刷新UI复选框对象以反映更新后的值:

$("#option2").prop("checked", true); // Check id option2
$("input[name='radio_options']").button("refresh"); // Refresh button set

4

我使用以下代码:

对不起,英语。

var $j = jQuery.noConflict();

$j(function() {
    // add handler
    $j('#radio-1, #radio-2').click(function(){

        // find all checked and cancel checked
        $j('input:radio:checked').prop('checked', false);

        // this radio add cheked
        $j(this).prop('checked', true);
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<fieldset class="section">
  <legend>Radio buttons</legend>
  <label>
    <input type="radio" id="radio-1" checked>
    Option one is this and that&mdash;be sure to include why it's great
  </label>
  <br>
  <label>
    <input type="radio" id="radio-2">
    Option two can be something else
  </label>
</fieldset>


4

用例子试试

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myForm">
<input type="radio" name="radio" value="first"/> 1 <br/>
<input type="radio" name="radio" value="second"/> 2 <br/>
</form>


<script>
$(document).ready(function () {
    $('#myForm').on('click', function () {
        var value = $("[name=radio]:checked").val();

        alert(value);
    })
});
</script>


3
function rbcitiSelction(e) {
     debugger
    $('#trpersonalemail').hide();
    $('#trcitiemail').show();
}

function rbpersSelction(e) {
    var personalEmail = $(e).val();
    $('#trpersonalemail').show();
    $('#trcitiemail').hide();
}

$(function() {  
    $("#citiEmail").prop("checked", true)
});

2
$("#radio_1").attr('checked', true);
//or
$("#radio_1").attr('checked', 'checked');

2
$("#radio_1").attr('checked', true);这行不通。如操作员所述
JohnP 2011年

2
请在您的答案中解释代码,并阅读问题(已尝试过)
SomeKittens 2014年

2

我有一些相关示例需要增强,如果我想添加新条件,例如,如果我想在单击项目状态值(摊铺机和铺路板除外)后隐藏颜色方案,该怎么办。

示例在这里:

$(function () {
    $('#CostAnalysis input[type=radio]').click(function () {
        var value = $(this).val();

        if (value == "Supply & Lay") {
            $('#ul-suplay').empty();
            $('#ul-suplay').append('<fieldset data-role="controlgroup"> \

http://jsfiddle.net/m7hg2p94/4/


2

另外,您可以检查元素是否被选中:

if ($('.myCheckbox').attr('checked'))
{
   //do others stuff
}
else
{
   //do others stuff
}

您可以检查未检查的元素:

$('.myCheckbox').attr('checked',true) //Standards way

您也可以通过以下方式取消选中:

$('.myCheckbox').removeAttr('checked')

您可以检查单选按钮:

对于等于或大于(> =)1.6的jQuery版本,请使用:

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

对于(<)1.6之前的版本,请使用:

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

2

我用的是jquery-1.11.3.js

基本启用和禁用

提示1 :(单选按钮类型常见的“禁用和启用”)

$("input[type=radio]").attr('disabled', false);
$("input[type=radio]").attr('disabled', true); 

提示2 :( ID选择器使用prop()或attr())

$("#paytmradio").prop("checked", true);
$("#sbiradio").prop("checked", false);

jQuery("#paytmradio").attr('checked', 'checked'); // or true this won't work
jQuery("#sbiradio").attr('checked', false);

提示3 :(使用prop()或arrt()的类选择器)

$(".paytm").prop("checked", true);
$(".sbi").prop("checked", false);

jQuery(".paytm").attr('checked', 'checked'); // or true
jQuery(".sbi").attr('checked', false);

其他提示

$("#paytmradio").is(":checked")   // Checking is checked or not
$(':radio:not(:checked)').attr('disabled', true); // All not check radio button disabled

$('input[name=payment_type][value=1]').attr('checked', 'checked'); //input type via checked
 $("input:checked", "#paytmradio").val() // get the checked value

index.html

<div class="col-md-6">      
    <label class="control-label" for="paymenttype">Payment Type <span style="color:red">*</span></label>
    <div id="paymenttype" class="form-group" style="padding-top: inherit;">
        <label class="radio-inline" class="form-control"><input  type="radio" id="paytmradio"  class="paytm" name="paymenttype" value="1" onclick="document.getElementById('paymentFrm').action='paytmTest.php';">PayTM</label>
        <label class="radio-inline" class="form-control"><input  type="radio" id="sbiradio" class="sbi" name="paymenttype" value="2" onclick="document.getElementById('paymentFrm').action='sbiTest.php';">SBI ePAY</label>
    </div>
</div>

2

使用prop()方法

在此处输入图片说明

链接

<p>
    <h5>Radio Selection</h5>

    <label>
        <input type="radio" name="myRadio" value="1"> Option 1
    </label>
    <label>
        <input type="radio" name="myRadio" value="2"> Option 2
    </label>
    <label>
        <input type="radio" name="myRadio" value="3"> Option 3
    </label>
</p>

<p>
    <button>Check Radio Option 2</button>
</p>


<script>
    $(function () {

        $("button").click(function () {
            $("input:radio[value='2']").prop('checked',true);
        });

    });
</script>

1

尝试这个

 $("input:checked", "#radioButton").val()

如果检查退货True 如果未检查退货False

jQuery v1.10.1

1

有时上述解决方案不起作用,那么您可以尝试以下操作:

jQuery.uniform.update(jQuery("#yourElementID").attr('checked',true));
jQuery.uniform.update(jQuery("#yourElementID").attr('checked',false));

您可以尝试的另一种方法是:

jQuery("input:radio[name=yourElementName]:nth(0)").attr('checked',true);

1
Uniform是一个使表单更漂亮的jQuery插件,但是它通过添加额外的元素来做到这一点。每当我更新选中的值时,多余元素的状态都不会更新,从而导致未选中的不可见输入,但带有看起来已选中的可见背景元素。jQuery.uniform.update()是解决方案!
DenilsonSáMaia

1

尝试这个:

$(document).ready(function(){
  $("#Id").prop("checked", true).checkboxradio('refresh');
});

如果不包括checkboxradio插件文件,这将无法工作,当您仅可以使用jQuery的内置函数来完成此操作时,这是没有意义的(请参见接受的答案)。
弥敦道

1

我只是有一个类似的问题,一个简单的解决方案是只使用:

.click()

如果在调用函数后刷新收音机,则任何其他解决方案都可以使用。


1
呼叫点击有时在ie9中令人头疼
Astolfo Hoscher

1

attr接受两个字符串。

正确的方法是:

jQuery("#radio_1").attr('checked', 'true');
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.