iphone手机safari输入法不支持keyup事件解决方法

来源:互联网 发布:linux rpm qa grep 编辑:程序博客网 时间:2024/05/05 19:45

问题是这样的,用input search做模糊搜索的时候,在键盘里面输入关键词,会通过ajax后台查询,然后返回数据,用input监听键盘keyup事件,在安卓手机是可以的,但是在iOS手机自带的输入法无效,经过查询得出以下方法;

起初我想到的是使用 JQ 里的 change,但是马上排除此方法,因为 change 是在文本框失去焦点时才会触发。曲线救国一下,想到用 keydown 来解决。在安卓一切还好,但是在iphone手机上,使用iphone自带的输入法这个事件是无法触发的。所以这个方法也行不通。

随后我去查询了一些资料,得出只有原生 js 的 oninput & onpropertychange 符合此要求,经过测试 bind 会绑定类似的事件,那便是 input & propertychange。

以下为JQ例子:

$('input').bind('input propertychange', function() {  //……});
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

注: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);}
原创粉丝点击