1

我的表单中有太多具有不同名称的单选按钮,如果仅选中所有单选按钮组(换句话说,每个单选按钮名称已被选中),我想启用提交按钮。我怎样才能用 jQuery 做到这一点?

4

2 回答 2

1

首先你需要收集所有电台组name的。然后您需要遍历所有无线电组并检查它们是否都被检查。例如:

$(function() {
    $('input:radio').change(function(){
        var names = [];
        var allChecked = true;
        $('input:radio').each(function(){
            if(names.indexOf($(this).attr('name')) === -1) {
                names.push($(this).attr('name'));
            }
        });
        for(var i = 0, cnt = names.length; i < cnt; i++) {
            if(!$('input[name="' + names[i] + '"]').is(':checked')) {
                allChecked = false;
            }
        }
        if(allChecked) {
            $('#submit').removeAttr('disabled');
        }
    })
});​

请参阅jsFiddle 上的演示。

于 2012-07-04T10:36:54.113 回答
1

HTML:

<form>
   <input type="radio" name="a">
   <input type="radio" name="a">
   <input type="radio" name="a">
   <input type="radio" name="a">|
   <input type="radio" name="b">
   <input type="radio" name="b">
   <input type="radio" name="b">
   <input type="radio" name="b">|
   <input type="radio" name="c">
   <input type="radio" name="c">
   <input type="radio" name="c">
   <input type="radio" name="c">
   <input id="mysubmit" type="submit" value="Submit" disabled="disabled"/>
</form>

查询:

$().ready(function(){
   $('form input:radio').change(function(){
        var rButtons = $('form input:radio');
        var rValues = $.map(rButtons, function(e, i) {
               return $('input[name="'+ e.name +'"]').is(':checked');
        }).toString().split(',');
        // -1 for if no match
        if($.inArray('false', rValues) == -1) {
            $('#mysubmit').removeAttr('disabled');
        }
    });

});

更新了此答案以符合您的要求。 小提琴演示

于 2012-07-04T11:02:41.977 回答