Opera浏览器在输入法开启情况下无法触发键盘事件的解决办法——oninput事件

需求:

    当input输入框输入中文分号“;”时替换成英文分号“;”并结束输入,移除input。

问题:

    Opera浏览器在输入法开启情况下,无法触发键盘事件。

解决:

    使用oninput事件。

 

代码(JS):

document.getElementById("theInput").addEventListener("input", function (event) {...}, false);

详解:

    attachEvent方法:为某一事件附加其它的处理事件,它不支持Mozilla系列浏览器 
    addEventListener方法则用于Mozilla系列的浏览器

   

    oninput事件只有IE以外的浏览器支持,在value改变时触发,实时的,即每增加或删除一个字符就会触发。

    在以下情况下会失效:

        a). 当用脚本改变value时;

        b). 从浏览器的自动下拉提示中选取值时。

 

注意:

    添加该事件时需要判断是否是IE浏览器,有一个非常简单的判断方法,在事件中添加以下代码:

if (! +[1, ]) {//如果是IE,则返回
return;
}

 

参考:

   js监听输入框值的即时变化onpropertychange,oninput :http://www.jb51.net/article/27684.htm

   js判断是否是IE浏览器的几种方法:http://www.xker.com/page/e2010/0527/96514.html 

 

 

posted @ 2011-10-14 14:48  hyven  阅读(422)  评论(0编辑  收藏  举报