17

在 jQuery 中,我想选择所有未选中按钮的单选按钮组。

或者,有没有一种方法可以选择所有单选按钮组并遍历这些组?

我正在向页面动态添加 N 个单选按钮组,并且事先不知道单选按钮组的名称是什么。

4

3 回答 3

37

要查找所有无线电组:

var radio_groups = {}
$(":radio").each(function(){
    radio_groups[this.name] = true;
})

查找哪个单选组已选中单选框,哪个未选中:

for(group in radio_groups){
    if_checked = !!$(":radio[name='"+group+"']:checked").length
    alert(group+(if_checked?' has checked radios':' does not have checked radios'))
}
于 2009-07-22T15:04:05.927 回答
0

支持多组和预检查。

$('input').click(function() {
    var $t = $(event.target);
    if ($t.hasClass('checked')) $t.removeAttr('checked');
    else $('input[type="radio"][name="' + $t.prop('name') + '"]').not($t).removeClass('checked');
    $t.toggleClass('checked');
}).filter(':checked').addClass('checked');​

```

证明:http: //jsfiddle.net/abrkn/PGW2Z/

于 2012-09-30T11:27:36.280 回答
0

按组名选择所有电台并仅获取不同名称的列表:

    function selectRadioByGroupName() {
        return $.unique($('input:radio').map(function(index, element) {
            return this.name;
        }));
    }

一个示例片段:

function selectRadioByGroupName() {
  return $.unique($('input:radio').map(function(index, element) {
    return this.name;
  }));
}



$(function () {
  selectRadioByGroupName().each(function(index, element) {
    $('body').append($('<p>First Group name is: ' + element + '</p>'));
  });
});
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script>

<form action="">
    <p>
        Q1:
    </p>
    <input type="radio" name="gender" value="male"> Male<br>
    <input type="radio" name="gender" value="female"> Female<br>
    <input type="radio" name="gender" value="other"> Other
    <br />
    <p>
        Q2:
    </p>
    <input type="radio" name="status" value="male"> Single<br>
    <input type="radio" name="status" value="female"> Married<br>
    <input type="radio" name="status" value="other"> Other
    <br />
    <input type="button" name="submit_id" value="Submit" onclick="submitAnswers()">
</form>

获得不同的组名后,可以循环使用它们。

于 2016-04-05T22:51:09.863 回答