[英]Why does dynamically changing a checkbox not trigger a form change event?
我寫了這個javascript / jQuery片段來更改復選框。 http://jsfiddle.net/johnhoffman/crF93/
使用Javascript
$(function() {
$("a").click(function() {
if ($("input[type='checkbox']").attr('checked') == "checked")
$("input[type='checkbox']").removeAttr('checked');
else
$("input[type='checkbox']").attr('checked', 'checked');
return false;
});
$("input[type='checkbox']").change(function(){
console.log("Checkbox changed.");
});
});
HTML
<input type="checkbox" />
<a href="#">Change CheckBox</a>
有趣的是,單擊該鏈接會更改文本框,但不會觸發調用在Chrome Web Developer Console中記錄消息的功能的表單更改事件。 為什么? 我怎么做到這一點?
您需要觸發更改事件, .trigger('change')
,以便事件知道發生了更改。
來自http://api.jquery.com/change/ :
描述:將事件處理程序綁定到“更改”JavaScript事件,或在元素上觸發該事件。
此方法是前兩個變體中
.on( "change", handler )
和第三個變量中的.trigger( "change" )
的快捷方式。
change
事件在其值更改時發送到元素。 此事件僅限於<input>
元素,<textarea>
框和<select>
元素。 對於選擇框,復選框和單選按鈕,當用戶使用鼠標進行選擇時會立即觸發事件,但對於其他元素類型,事件將延遲,直到元素失去焦點。
演示:
使用鏈接: http : //jsfiddle.net/nPkPw/5/
即$("input[type='checkbox']").trigger('change').attr('checked', 'checked');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.