2012-12-18 110 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/