0

フォームがクリックされた後、フォームが送信される前に「チェック」されているチェックボックスの数を数える必要があります。ボックスがクリックされたときに呼び出されるJavaScript関数があり、フォーム内の値を動的に変更します。ただし、ボックスがクリックされた時点で存在するカウントと値を返しています。

私のコードは現在、チェックボックスとラベルを囲む onClick イベント ハンドラーを持っています。

<div class="part" style="padding-right: 30px" onClick="runThis()">
    <input id="checkbox_2" name="dog" type="checkbox" class='topdog'                              checked='checked' value="2" />
    <label for="checkbox_2">Snoopy (Top Dog)</label>
</div>

...


    function runThis() { 
    var dogsSelected = jQuery("input[name='dog']:checked");
    var numSelected = dogsSelected.length;
    alert("numSelected: " + numSelected);
    }

簡単な解決策があると確信しているか、これに間違って取り組んでいます。

ヒント/アドバイスをいただければ幸いです。

4

3 に答える 3

1

JavaScript エラーはありますか? その機能を取り除くと、適切runThis()に機能することがわかりました。$(document).ready

onClick=jQuery イベント ハンドラーを優先して、その属性を削除することも検討してください。

$("input[name='dog']").on('click',function(e) {
    var dogsSelected = $("input[name='dog']:checked");
    var numSelected = dogsSelected.length;
    alert("numSelected: " + numSelected);
});

http://jsfiddle.net/mblase75/xsWDn/

于 2012-12-18T19:10:30.883 に答える
0

「変更」イベントを使用できます。

$("input[name='dog']").on('change', runThis);

function runThis() {
    var dogsSelected = jQuery("input[name='dog']:checked");
    var numSelected = dogsSelected.length;
    alert("numSelected: " + numSelected);
}​

http://api.jquery.com/change/

于 2012-12-18T19:13:24.230 に答える
0

その場合は、マウスを離したときに反応するように変更してみてください。別の結果が得られるはずです。

DOM 3 に変更が加えられる前に、おそらくイベントをアクティブにしています。

編集:

質問に onclick トリガーと書かれていることを気にしないでください。読まないのが悪い。

に変更してみてください:onmouseup、それでうまくいくはずです:

<div class="part" style="padding-right: 30px" onmouseup="runThis()">
<input id="checkbox_2" name="dog" type="checkbox" class='topdog'                              checked='checked' value="2" />
<label for="checkbox_2">Snoopy (Top Dog)</label>

于 2012-12-18T19:16:20.937 に答える