`
昔日舞曲
  • 浏览: 55996 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Firefox和IE 的onchange,onpPropertyChange事件的区别

阅读更多

参考文章:

http://www.cnblogs.com/dingxue/archive/2007/03/23/684807.html

http://www.stud.uni-karlsruhe.de/~uu5i/blog/index.php?aid=737

原因:

FF里面,onchange事件马上发生。 IE里面,onchange事件在失去焦点后发生。

例证:

<html>

<head>

    <title>IE对input列素onchange事件的支持BUG测试</title>

    <script type="text/javascript">

        function showTip(){

            document.getElementById("Tip").style.display="inline";

        }

    </script>

</head>

<body>

    <div style="width:400px;">

        <input type="text" name="txt1" onchange="showTip()">

        <span id="Tip" style="display:none;">这里是提示信息,在页面加载时时是隐藏的</span><br>

        这行字用来显示到页面上<br>

        <input type="text" name="txt2">

    </div>

</body>

</html>

运行上面的代码,在第一个文本框里随便输出些什么,然后用鼠标点击第二个文本框,看光标的位置,按下Backspace键试试,问题出现!

然后重新打开页面,焦点移到第一个文本框里,不输入任何东西然后点击第二个文本框,问题没有出现。

按一般理解上的意义来说,onchange应该是在文本框里内容有变化时发现,就是每输入一个字符都应该触发一次,然而结果却表明IE是在输入时并没有触发,而是在input失去焦点时触发了onchange事件,“基本等同于”onblur事件,但onblur事件却没有这个BUG

解决办法:

IE有一个onpropertychange事件,和标准的onchange事件一样触发,所以通常的做法都是同时绑定着两个事件

改为:

<input type="text" name="txt1" onpropertychange="showTip()">

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics