313

如何使用 jQuery 设置选中的单选选项?

需要检查是否没有设置默认值,然后设置一个默认值

4

16 回答 16

588

假设您有这样的单选按钮,例如:

    <input type='radio' name='gender' value='Male'>
    <input type='radio' name='gender' value='Female'>

如果没有检查收音机,您想检查值为“Male”onload 的那个:

    $(function() {
        var $radios = $('input:radio[name=gender]');
        if($radios.is(':checked') === false) {
            $radios.filter('[value=Male]').prop('checked', true);
        }
    });
于 2009-05-15T22:12:32.137 回答
115

一个班轮怎么样?

$('input:radio[name="gender"]').filter('[value="Male"]').attr('checked', true);
于 2010-07-23T09:23:46.280 回答
56

这将导致 form.reset() 失败:

$('input:radio[name=gender][value=Male]').attr('checked', true);

但这一个有效:

$('input:radio[name=gender][value=Male]').click();
于 2011-08-06T04:58:14.453 回答
41

JQuery 实际上有两种方法来设置单选和复选框的选中状态,这取决于您是否在 HTML 标记中使用 value 属性:

如果它们具有 value 属性:

$("[name=myRadio]").val(["myValue"]);

如果他们没有 value 属性:

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

更多细节

在第一种情况下,我们使用 name 指定整个无线电组,并告诉 JQuery 使用 val 函数查找要选择的无线电。val 函数采用 1 元素数组并找到具有匹配值的收音机,将其设置为 checked=true。其他同名的将被取消选择。如果没有找到具有匹配值的收音机,则将取消选择所有收音机。如果有多个具有相同名称和值的无线电,则将选择最后一个,而取消选择其他无线电。

如果您没有使用收音机的值属性,那么您需要使用唯一 ID 来选择组中的特定收音机。在这种情况下,您需要使用 prop 函数来设置“checked”属性。许多人不将 value 属性与复选框一起使用,因此#2 更适用于复选框而不是收音机。另请注意,当复选框具有相同名称时,它们不会形成组,您可以$("[name=myCheckBox").prop("checked", true);为复选框做。

您可以在此处使用此代码:http: //jsbin.com/OSULAtu/1/edit ?html,output

于 2013-12-28T01:16:11.437 回答
22

我喜欢@Amc 的回答。我发现表达式可以进一步压缩以不使用 filter() 调用(@chaiko 显然也注意到了这一点)。此外,对于 jQuery v1.6+,prop() 是与 attr() 比较的方法,有关该主题的官方最佳实践,请参阅prop() 的 jQuery 文档。

考虑来自@Paolo Bergantino 答案的相同输入标签。

<input type='radio' name='gender' value='Male'>
<input type='radio' name='gender' value='Female'>

更新后的单行代码可能如下所示:

$('input:radio[name="gender"][value="Male"]').prop('checked', true);
于 2012-10-08T23:18:55.340 回答
16

我认为您可以假设,该名称是唯一的,并且组中的所有收音机都具有相同的名称。然后你可以像这样使用 jQuery 支持:

$("[name=gender]").val(["Male"]);

注意:传递数组很重要。

有条件的版本:

if (!$("[name=gender]:checked").length) {
    $("[name=gender]").val(["Male"]);
}
于 2013-04-24T12:31:47.577 回答
8

原生 JS 解决方案:

 document.querySelector('input[name=gender][value=Female]').checked = true;

http://jsfiddle.net/jzQvH/75/

HTML:

<input type='radio' name='gender' value='Male'> Male
<input type='radio' name='gender' value='Female'>Female
于 2016-06-15T00:57:00.133 回答
7

如果您希望它是真正动态的并选择与传入数据相对应的无线电,则可以使用。它使用传入的数据的性别值或使用默认值。

if(data['gender'] == ''){
 $('input:radio[name="gender"][value="Male"]').prop('checked', true);
}else{
  $('input:radio[name="gender"][value="' + data['gender'] +'"]').prop('checked', true);
};
于 2012-11-08T19:32:25.943 回答
3

如果你想从你的模型中传递一个值,并且想根据值从加载组中选择一个单选按钮,那么使用:

查询:

var priority = Model.Priority; //coming for razor model in this case
var allInputIds = "#slider-vertical-" + itemIndex + " fieldset input";

$(allInputIds).val([priority]); //Select at start up

和html:

<div id="@("slider-vertical-"+Model.Id)">
 <fieldset data-role="controlgroup" data-type="horizontal" data-mini="true">
    <input type="radio" name="@("radio-choice-b-"+Model.Id)" id="@("high-"+Model.Id)" value="1" checked="checked">
    <label for="@("high-"+Model.Id)" style="width:100px">@UIStrings.PriorityHighText</label>

    <input type="radio" name="@("radio-choice-b-"+Model.Id)" id="@("medium-"+Model.Id)" value="2">
    <label for="@("medium-"+Model.Id)" style="width:100px">@UIStrings.PriorityMediumText</label>

    <input type="radio" name="@("radio-choice-b-"+Model.Id)" id="@("low-"+Model.Id)" value="3">
    <label for="@("low-"+Model.Id)" style="width:100px">@UIStrings.PriorityLowText</label>
 </fieldset>
</div>
于 2016-04-15T10:52:33.573 回答
2

不需要这一切。使用简单而旧的 HTML,您可以实现您想要的。如果你让你想要的收音机默认检查是这样的:
<input type='radio' name='gender' checked='true' value='Male'>
当页面加载时,它会被选中。

于 2010-11-12T12:59:43.560 回答
2
 $("form input:[name=gender]").filter('[value=Male]').attr('checked', true);
于 2012-12-16T13:10:57.927 回答
2

以下是上述方法的示例:

<div class="ui-field-contain">
<fieldset data-role="controlgroup" data-type="horizontal">    <legend>Choose a pet:</legend>
    <input type="radio" name="radio-choice-2" id="radio-choice-1" value="choice1">
    <label for="radio-choice-1">Cat</label>

    <input type="radio" name="radio-choice-2" id="radio-choice-2" value="choice2">
    <label for="radio-choice-2">Dog</label>

    <input type="radio" name="radio-choice-2" id="radio-choice-3" value="choice3">
    <label for="radio-choice-3">Hamster</label>

    <input type="radio" name="radio-choice-2" id="radio-choice-4" value="choice4">
    <label for="radio-choice-4">Lizard</label>
  </fieldset>
</div>

在 JavaScript 中:

$("[name = 'radio-choice-2'][value='choice3']").prop('checked', true).checkboxradio('refresh');
于 2015-09-14T11:46:40.483 回答
1

获取无线电输入值时请注意此行为:

$('input[name="myRadio"]').change(function(e) { // Select the radio input group

    // This returns the value of the checked radio button
    // which triggered the event.
    console.log( $(this).val() ); 

    // but this will return the first radio button's value,
    // regardless of checked state of the radio group.
    console.log( $('input[name="myRadio"]').val() ); 

});

所以$('input[name="myRadio"]').val()不会像您所期望的那样返回单选输入的检查值——它返回第一个单选按钮的值。

于 2013-11-13T23:23:38.550 回答
0

//如果你是在 javascript 或骨干网之类的框架上做的,你会经常遇到这种情况,你可能会遇到这样的事情

$MobileRadio = $( '#mobileUrlRadio' );

尽管

$MobileRadio.checked = true;

不管用,

$MobileRadio[0].checked = true;

将要。

您的选择器也可以像上面推荐的其他人一样。

于 2013-09-24T15:44:53.110 回答
0

De esta forma Jquery obtiene solo el elemento 检查

$('input[name="radioInline"]:checked').val()
于 2018-05-09T13:49:19.513 回答
0

这适用于多个单选按钮

$('input:radio[name="Aspirant.Gender"][value='+jsonData.Gender+']').prop('checked', true);
于 2019-02-06T09:22:09.880 回答