1

次の HTML 要素があります。

<input type="checkbox" id="dog_pop_123">
<input type="checkbox" id="cat_pop_123">
<input type="checkbox" id="parrot_pop_123">

チェックボックスのうち 3 つがチェックされていない場合は、false を返す必要があることを確認したいと思います。ただし、3 番目のチェックボックスが存在しない可能性があることを考慮する必要があります。

今私はこれを持っています:

var id = 123;

if ( !$('#dog_pop_'+id+':checked').length
    && !$('#cat_pop_'+id+':checked').length
    && !$('#parrot_pop_'+id+':checked').length ) {
  return false;
}

ただし、最後の入力が存在せず、最初の 2 つが存在し、チェックされている場合、これは false を返しますが、そうすべきではありません。

どうすればこれを解決できますか?

4

3 に答える 3

2

共通の親内でチェックボックスをグループ化することをお勧めします。

<fieldset id="group1">
    <input type="checkbox" id="dog_pop_123">
    <input type="checkbox" id="cat_pop_123">
    <input type="checkbox" id="parrot_pop_123">
</fieldset>

そして、以下を使用します。

return !($('#group1 input:checkbox').length == $('#group1 input:checkbox:not(":checked")').length);

実際には、チェックボックスの数がチェックされていないチェックボックスの数と等しい場合は (!演算子を使用して) false を返し、そうでない場合は true を返します。

参考文献:

于 2012-11-21T20:29:33.630 に答える
0

次のコードを試してください。

var id = 123, 
    checkboxes = $('#dog_pop_' + id + ', #cat_pop_' + id + ', #parrot_pop_' + id);
if(checkboxes.filter(function() {return this.checked !== true;}).length !== checkboxes.length) {
    //Not all checkboxes are checked
}
于 2012-11-21T20:24:51.513 に答える
0
if($('input[id$="pop_123"]').length != $('input[id$="pop_123"]:checked').length ) {
  return false;
}

pop_123 で終わる ID が多くない限り、うまくいくはずです。その場合、[type=checkbox]フィルターも追加できます。

$=セレクタ手段で使用すると終了します。ドキュメントを見る

于 2012-11-21T20:29:19.133 に答える