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 回答