以前一直在WEB实现autocomplete运用,手机上也是原生开发。这次客户要求,对一个HTML页面,在手机承现时,一个文本框需要实现AutoComplete功能。
我使用的是EasyAutocomplete
http://easyautocomplete.com
不过在苹果IOS手机有一个BUG, 当然这个BUG不是EasyAutocomplete的BUG,仅仅是IOS的特性原因。
Android上没有问题。
如果输入英文,EasyAutocomplete在IOS上的表现,没问题,能够触发事件。但是当输入中文时,无法触发事件。
搜狗输入法也能够支持。
经过调查资料,研究EasyAutocomplete代码,终于实现了在IOS,输入中文也能触发。
首先IOS的原因,keyup事件不能触发,settimeout不能使用。
经修改如下:
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();
}