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

Ale*_*xis 853 javascript forms jquery radio-button

我尝试用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>
Run Code Online (Sandbox Code Playgroud)

和JavaScript:

jQuery("#radio_1").attr('checked', true);
Run Code Online (Sandbox Code Playgroud)

不起作用:

jQuery("input[value='1']").attr('checked', true);
Run Code Online (Sandbox Code Playgroud)

不起作用:

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

不起作用:

你有其他想法吗?我错过了什么?

Mik*_*sen 1406

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

$("#radio_1").prop("checked", true);
Run Code Online (Sandbox Code Playgroud)

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

$("#radio_1").attr('checked', 'checked');
Run Code Online (Sandbox Code Playgroud)

提示:之后您可能还想打电话click()change()打开单选按钮.有关详细信息,请参阅注释

  • 在jQuery 1.9或更高版本中,此解决方案将无法运行.使用$("#radio_1").prop("checked",true); 代替. (78认同)
  • 将`.change()`添加到末尾以触发页面上的任何其他事件很有帮助. (37认同)
  • 如果您希望无线电组中的其他单选按钮正确更新,请使用`$("#radio_1").prop("checked",true).trigger("click");` (16认同)
  • 重新安排这个答案可能是明智的,因为`.prop`显然是正确答案,而`.attr`方法是jQuery <1.6的注释. (12认同)
  • @Installero实际上,`prep`从1.6开始是正确的,并且从1.9开始是必需的. (11认同)
  • @Paul`$(“#radio_1”)。click()够吗?为什么还是道具? (3认同)
  • @Dennis,触发“更改”实际上不会更改未选择的单选按钮的值,但是单击会在何处。 (2认同)
  • 实际上,在这种情况下,prop函数是无用的。...只需单击click,它将选择并更新。 (2认同)
  • 仅$('。radio')。click(); 在团体广播中为我工作 (2认同)

Vla*_*cic 244

试试这个.

在这个例子中,我用它的输入名称和值来定位它

$("input[name=background][value='some value']").prop("checked",true);
Run Code Online (Sandbox Code Playgroud)

很高兴知道:在多字值的情况下,它也会因为撇号而起作用.

  • 这可能是最好的方式,其他人倾向于坚持在那里使第二次功能无用,而这正如预期的那样工作 (5认同)
  • 比选定的答案好多了!正是我在寻找什么.这是通用的,而所选答案是特定的.太好了,谢谢. (3认同)
  • 我准备为我的所有收音机添加一个"id",但这种方法完美无瑕.但请记住,当您的值是多字(比如"紫色")时,您需要包含适当的引号:`$("input [name = background] [value ='color purple']").托( "选中",真正的);` (2认同)

Ume*_*til 95

在jQuery 1.6中添加的另一个函数prop(),用于相同的目的.

$("#radio_1").prop("checked", true); 
Run Code Online (Sandbox Code Playgroud)

  • 使用jQuery 1.9,`attr('checked',true)`停止为我工作,这就是解决方案! (13认同)

小智 77

简短易读的选项:

$("#radio_1").is(":checked")
Run Code Online (Sandbox Code Playgroud)

它返回true或false,因此您可以在"if"语句中使用它.

  • 谢谢!这就是我想要的,但是(仅供参考)OP询问如何设置单选按钮,而不是获取值.("检查"这个词令人困惑.) (4认同)

Lak*_*mar 31

试试这个.

要使用Value检查单选按钮,请使用此选项.

$('input[name=type][value=2]').attr('checked', true); 
Run Code Online (Sandbox Code Playgroud)

要么

$('input[name=type][value=2]').attr('checked', 'checked');
Run Code Online (Sandbox Code Playgroud)

要么

$('input[name=type][value=2]').prop('checked', 'checked');
Run Code Online (Sandbox Code Playgroud)

要使用ID检查单选按钮,请使用此选项.

$('#radio_1').attr('checked','checked');
Run Code Online (Sandbox Code Playgroud)

要么

$('#radio_1').prop('checked','checked');
Run Code Online (Sandbox Code Playgroud)


小智 13

试试这个:

$("input[name=type]").val(['1']);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/nwo706xw/


Ami*_*aqi 12

$.prop方法是更好:

$(document).ready(function () {                            
    $("#radio_1").prop('checked', true);        
});
Run Code Online (Sandbox Code Playgroud)

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

$(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();
    });        
});
Run Code Online (Sandbox Code Playgroud)


Cod*_*Spy 11

使用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>
Run Code Online (Sandbox Code Playgroud)


apa*_*kin 10

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

$("#radio_1").prop("checked", true).change();
Run Code Online (Sandbox Code Playgroud)


Hen*_*k N 9

这个答案感谢 Paul LeBeau 的评论。我想我应该把它写成一个正确的答案,因为令人惊讶的是没有一个。

\n

唯一对我有用的东西(jQuery 1.12.4,Chrome 86)是:

\n
$(".js-my-radio-button").trigger("click");\n
Run Code Online (Sandbox Code Playgroud)\n

这可以完成我想要的一切 \xe2\x80\x93 更改哪个单选按钮看起来被选中(视觉上和编程上)并触发事件,例如change单选按钮上的事件。

\n

仅按照其他答案的建议设置“选中”属性不会更改为我选择的单选按钮。

\n


Joh*_*hnP 8

你必须做

jQuery("#radio_1").attr('checked', 'checked');
Run Code Online (Sandbox Code Playgroud)

这是HTML属性


Anj*_*lva 6

如果财产name不起作用,请不要忘记id仍然存在.这个答案适用于那些想要以此为目标的id人.

$('input[id=element_id][value=element_value]').prop("checked",true);
Run Code Online (Sandbox Code Playgroud)

因为财产name对我不起作用.确保您没有环绕idname使用双/单引号.

干杯!


小智 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
        }
    });
});
Run Code Online (Sandbox Code Playgroud)


Anj*_*ant 6

是的,它对我有用:

$("#radio_1").attr('checked', 'checked');
Run Code Online (Sandbox Code Playgroud)


小智 5

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


Nai*_*rin 5

获取价值:

$("[name='type'][checked]").attr("value");
Run Code Online (Sandbox Code Playgroud)

设定值:

$(this).attr({"checked":true}).prop({"checked":true});
Run Code Online (Sandbox Code Playgroud)

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

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


UWU*_*DUN 5

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

$("input[type='radio'][name='userRadionButtonName']").prop('checked', true);
Run Code Online (Sandbox Code Playgroud)


小智 5

我使用这段代码:

我对英语感到抱歉。

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);
    });
});
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)


小智 5

用例子试试这个

<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>
Run Code Online (Sandbox Code Playgroud)


fre*_*der 5

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

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