今天遇到了IE一個onchange事件的bug,此bug存在于IE所有的版本(6,7,8)不知道是不是bug,還是IE故意這樣設計的?姑且不做評價,我們來看看IE onchange事件的重現過程:
給input等控件添加onchange事件,例如input的checkbox(radio等),在IE下點擊選中,并沒有觸發onchange事件,而需要再次失去焦點(點擊頁面的任何地方)的時候才可以觸發onchange事件,而在Firefox下是點擊選中checkbox既可以觸發onchange事件的~
bug重現代碼
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>IE onchange event bug</title></head>
<body>
<input type="checkbox" value="1" onchange="alert(this.value);" id="demo1"/>
<label for="demo1">demo1</label>
<input type="checkbox" value="2" onchange="alert(this.value);" id="demo2"/>
<label for="demo2">demo2</label>
</body></html>
解決方法
在jQuery1.4.2中綁定change事件是完全可以解決的,而在jQuery1.3.2中綁定change事件是不行的,我們可以通過click事件來綁定
如果不怕麻煩也不介意綁定兩次事件,可以使用IE自帶的onpropertychange事件綁定change事件,斷橋殘雪測試是可以的,不過這樣子在IE下就綁定了兩次change事件,不推薦這個方法,如果是checkbox,radio等還是使用click事件來處理吧
出處:http://www.js8.in/541.html