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>

JQuery:

$().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 に答える