js与jquery实时监听输入框值的oninput与onpropertychange方法
本文实例讲述了js与jquery实时监听输入框值的oninput与onpropertychange方法。分享给大家供大家参考。具体如下:
最近做过一个项目,需求是下拉框里自动匹配关键字,具体细节是实时监听文本框value值的变化,然后匹配相关内容。
初接项目,首先想到的是JQ里的change,但是马上排除此方法,因为change是在文本框失去焦点时才会触发。曲线救国一下,想到用keydown来解决。其他一切还好,只是当不通过键盘操作,而是通过鼠标来复制粘贴时,这个事件是无法触发的。所以这个方法也排除掉了。
然后,查询了一些相关资料,发现只有原生js的oninput&onpropertychange符合此要求,接着便去JQ的API里去找符合的方法,很失望,并未找到,但是bind确实会绑定类似的事件,那便是input&propertychange,通过测试,确实是没问题的。
现在将例子奉上:
JQ:
$('input').bind('inputpropertychange',function(){ //进行相关操作 });
其中:propertychange是为了兼容IE9以下版本的。
JS中的oninput事件在IE9以下版本不支持,需要使用IE特有的onpropertychange事件替代,这个事件在用户界面改变或者使用脚本直接修改内容两种情况下都会触发,有以下几种情况:
修改了input:checkbox或者input:radio元素的选择中状态,checked属性发生变化。
修改了input:text或者textarea元素的值,value属性发生变化。
修改了select元素的选中项,selectedIndex属性发生变化。
JS:
if(isIE) { document.getElementById("input").onpropertychange=keys(); } else//需要用addEventListener来注册事件 { document.getElementById("input").addEventListener("input",keys,false); }
希望本文所述对大家的javascript程序设计有所帮助。