1

グループ内の少なくとも 1 つのチェックボックスが常にオンになっていることを確認しようとしていますが、問題があります。

で始まる名前のチェックボックスが複数ありますpost_type[on('change')入力がチェックされているチェックボックスであるかどうかを確認すると問題が発生し、次のエラーが発生します。

value.is関数ではありません

誰かが私のコードのトラブルシューティングを手伝ってくれますか? ありがとう。

$(document).ready(function($){

    $('input[name^="post_type["]', '#site-search').on('change', function(){

        var checks = $('input[name^="post_type["]');
        var one_checked = is_one_checked(checks);

        if(one_checked === false){
            $(this).attr('checked', 'true');
        }

    });

});

function is_one_checked(checks){

    var checked = false; // Wheteher or not at least one box is checked (false by default)

    $(checks).each(function(key, value){
        if(value.is(':checkbox') && value.is(':checked')){
            checked = true;
        }
    });

    return checked;

}
4

4 に答える 4

1

value.is(':checked')機能しない理由は、ループ内でvalue生の DOM オブジェクトとして渡されるためです。は jQuery メソッドであるため、使用するには jQuery オブジェクト.is()をラップする必要があります。value

$(value).is(':checked')

于 2013-05-15T07:45:23.733 に答える
0

html checked="checked" で attr を指定してから、 .attr を使用しない理由:

if($(this).attr('type') == 'checkbox' && $(this).attr('checked') == 'checked'){
        $(this).attr('checked','checked')
    }
于 2013-05-15T08:42:05.717 に答える