2011-06-24 48 views
5

我正在實現一個「帳單地址與地址相同」的類型函數,當複選框被選中時,將根據其他字段填充字段。完美的作品。Jquery觸發器複選框:在檢查屬性設置之前發生與點擊事件綁定的功能

click事件的功能..

if ($(this).attr('checked')) { 
     // copy address fields to billing fields 
    } 
    else{ 
     // clear fields 
    } 

現在我用一個事件(jQuery的熱鍵插件)自動填寫所有字段的形式,所以我可以方便快捷地演示和測試表單。相反,在計費領域我想用

$("#CheckboxForAutofillId").trigger('click'); 

這不起作用,我第一次觸發事件,如上面的函數被調用時檢查的屬性地址字段作弊和灌裝但是觸發器('click')顯然在它改變屬性之前調用事件。

這意味着對我來說,正確地模擬它,我必須這樣做..

$("#CheckboxForAutofillId").attr("checked", "checked"); // sets checked 
$("#CheckboxForAutofillId").trigger('click');   // fires event then 'unchecks' 
$("#CheckboxForAutofillId").attr("checked", "checked"); // rechecks 

閱讀觸發jQuery的頁面,我沒有注意到這個提了,我一直懶得挖通來源看看究竟發生了什麼,但在我看來,理想情況下,觸發事件應該在觸發事件之前設置'checked'屬性,因爲這是更好地模擬檢查複選框的人員?

我錯過了什麼嗎?

回答

8

您應該使用change()而不是click()。

$("#CheckboxForAutofillId").change(function() 
{ 
    if(this.checked) ... 
}); 
+1

總是很高興看到正確使用js/jquery mix +1 – BumbleB2na

相關問題