使用jQuery单击后计算复选框

时间:2012-12-18 19:05:28

标签: javascript jquery html input checkbox

我需要计算表单中已选中的复选框的数量'点击之后,提交表单之前。我有一个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);
    }

我确信有一个简单的解决方案,或者我接近这个错误。

任何提示/建议都表示赞赏。

3 个答案:

答案 0 :(得分:0)

是否有任何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/

答案 1 :(得分: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/

答案 2 :(得分: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>