jQuery和单选按钮组

时间:2009-07-22 14:21:37

标签: jquery radio-button

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

或者,有没有办法可以选择所有单选按钮组并遍历各组?

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

3 个答案:

答案 0 :(得分:36)

查找所有广播组:

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'))
}

答案 1 :(得分: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/

答案 2 :(得分: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>

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