2012-12-18 51 views
0

我需要计算一个表单中被选中的复选框的数量,点击之后并在提交表单之前。我有一个javascript函数,当单击一个框可以动态改变表单中的某些值时调用。但它会返回点击该框时出现的计数和值。点击使用jQuery后点击复选框

由于我的代码是现在,我有一个封闭的复选框和标签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); 
    } 

我肯定有一个简单的解决方案或我错误地接近这一。

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

+1

你想忽略复选框的选择被点击? – Adil

+0

'复选框的数量在一个'检查'的形式后单击'..这是不明确的..你能更清楚地解释你的问题 –

+0

不,我想点击的复选框的值包括在结果 –

回答

0

如果是这样,你s应该尝试改变它对鼠标的反应,你应该得到不同的结果。

在对dom三进行更改之前,您可能正在激活该事件。

编辑:

没关系,它说的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> 

0

有没有JavaScript错误?我发现如果你从$(document).ready中取出runThis()函数,它可以正常工作。

您也可以考虑去除赞成jQuery的事件处理程序的onClick=属性:

$("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/

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/