問題①:在FF下,當改變checkbox的選中狀態時,會馬上觸發onchange事件。但在IE下改變checkbox的選中狀態時,并不會馬上出發onchange事件,而是需要等待checbox失去焦點時該事件才會出發。
為了解決這個問題,我在checkbox的onclick事件里添加了this.blur()這條語句,這是由于onclick事件是在onchange事件之前執行的,因而在Onclick事件中添加this.blur()使checkbox失去焦點便馬上會出發onchange事件。可如此一來,又遇到了第二個問題。
問題②:當onclick事件和this.blur同時使用時,在IE下會報錯。
在網上查找了一些資料,終于發現了onpropertychange這個事件。該事件在FF下是不會觸發的。而在IE下,當checkbox的選擇狀態改變時馬上會出發。于是,得出了最終的解決方案:在IE下,為checkbox綁定onpropertychange事件,而在FF下,為其綁定onchange事件。
具體代碼實現如下:
代碼如下:
var ua=navigator.userAgent.toLowerCase();
var s=null;
var browser={
msie:(s=ua.match(/msie\s*([\d\.]+)/))?s[1]:false,
firefox:(s=ua.match(/firefox\/([\d\.]+)/))?s[1]:false,
chrome:(s=ua.match(/chrome\/([\d\.]+)/))?s[1]:false,
opera:(s=ua.match(/opera.([\d\.]+)/))?s[1]:false,
safari:(s=ua.match(/varsion\/([\d\.]+).*safari/))?s[1]:false
};
if(browser.msie){//若為IE瀏覽器
checkbox.onpropertychange=function(){
//do someting
}
}
else{
checkbox.onchange=function(){
//do something
}
}
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com