教程集 www.jiaochengji.com
教程集 >  脚本编程  >  javascript  >  正文 onchange事件在IE和FF下触发方法

onchange事件在IE和FF下触发方法

发布时间:2015-06-08   编辑:jiaochengji.com
本文介绍了onchange事件在IE和FF下的不同表现,与相关问题的解决方法,有需要的朋友做个参考。

页面上有一个checkbox,当用户选择或者取消选择该checkbox时会向后台发一个jsonp请求。
当时的实现是为这个checkbox添加一个onchange事件,但结果却出人意料,为此,我深入的研究了一下,发现了onchange事件在IE和FF下的表现存在着以下问题。
问题①:在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 
};  //教程集 www.jiaochengji.com
if(browser.msie){//若为IE浏览器
    checkbox.onpropertychange=function(){
         //do someting
    }
}
else{
    checkbox.onchange=function(){
        //do something
    }
}

您可能感兴趣的文章:
onchange事件在IE和FF下触发方法
js触发onchange事件方法
JavaScript键盘事件深入解析
javascript开发中使用onpropertychange,oninput事件解决onchange事件的不足
jQuery文本框(input textare)事件绑定方法教程
关于jquery input textare 事件绑定及用法学习
JavaScript键盘事件(开启输入法时)
JQuery触发radio或checkbox的change事件
Js鼠标事件大全(最新,最全的版本)
javascript键盘鼠标等事件对照表

关键词: onchange事件   
[关闭]
~ ~