1

少なくともチェックボックスがオンになっているかどうか知りたいので、次のコードを使用しています。

function CheckIfAtLeastOneBoxIsCheckedBeforeSavingForm() {
  var n = $('input[id*="ckHMreq"]:checked').length;
  alert(n);
}

チェックボックスがオンになっていない場合、アラートメッセージボックスには0が表示されます。ただし、少なくとも1つのチェックボックスがオンになっている場合、アラートメッセージボックスは表示されません。

その理由は何ですか?

編集

これはブラウザによって生成されたHTMLです

<input id="contentMain_cklistPayroll_gvCKList_ckHMreq_0" type="checkbox" name="_ctl0:contentMain:cklistPayroll:gvCKList:_ctl2:ckHMreq" />

また、jqueryコードに「チェック済み」を追加しました。チェックボックスがオンになっていない場合でも0が表示され、チェックボックスがオンになっている場合はメッセージボックスが表示されません。

4

2 に答える 2

2

:checkedチェックされたチェックボックスのみを選択するように、セレクターに追加する必要があります。

function CheckIfAtLeastOneBoxIsCheckedBeforeSavingForm() {
    var n = $('input[id*="ckHMreq"]:checked').length;
    alert(n);
}
于 2013-01-30T19:44:44.937 に答える
1

元のコードでは、0 ではなく、常にチェックボックスの入力数が表示されます...

http://jsfiddle.net/hRubC/ (チェックあり) http://jsfiddle.net/szuzv/ (チェックなし)

...そのため、htmlに欠陥がある可能性があります。

:checked別の回答で示唆されているように、セレクターに追加する必要があるようです。

編集:

http://jsfiddle.net/HFzJw/ 少なくとも Chrome では、元のセレクターはinput質問に追加したマークアップで正常に動作します。おそらくこれはブラウザ固有の問題でしょうか?

EDIT 2: http://jsbin.com/iperin/1/edit (jsfiddle は今朝ダウンしているようです)

すべてのブラウザーで同じ結果が得られているというコメントに応えて、質問に表示されているマークアップと正確に一致する別の実際の例を次に示します。この例を試してみると、正しく動作しませんか? 正しく機能する場合は、ページの他の場所で他に何が違うかを調べてください。

于 2013-01-30T19:45:24.877 に答える