之前一直在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(); }