之前一直在WEB实现autocomplete运用,手机上也是原生开发。此次客户要求,对一个HTML页面,在手机承现时,一个文本框须要实现AutoComplete功能。javascript
我使用的是EasyAutocompletejava
http://easyautocomplete.comspa
不过在苹果IOS手机有一个BUG, 固然这个BUG不是EasyAutocomplete的BUG,仅仅是IOS的特性缘由。code
Android上没有问题。事件
若是输入英文,EasyAutocomplete在IOS上的表现,没问题,可以触发事件。可是当输入中文时,没法触发事件。ip
搜狗输入法也可以支持。开发
通过调查资料,研究EasyAutocomplete代码,终于实现了在IOS,输入中文也能触发。rem
首先IOS的缘由,keyup事件不能触发,settimeout不能使用。input
经修改以下:io
1.找到 bindEvents定义,在定义中增长一个事件方法,如function bindInputPropertychange(){}。
function bindEvents() { bindAllEvents(); function bindAllEvents(){...} function bindFocusOut(){...} function bindKeyup() {...} ..... }
2.bindInputPropertychange事件方法,
function bindInputPropertychange() { $($field).on('input propertychange',function(){ // 实现 } }
3.把bindInputPropertychange加到bindAllEvents中
function bindAllEvents() { if (checkParam("autocompleteOff", true)) { removeAutocomplete(); } bindFocusOut(); bindKeyup(); bindKeydown(); bindKeypress(); bindFocus(); bindBlur(); bindInputPropertychange(); }