close

jQuery.Autocomplete 是jquery的流行插件,能夠很好的實現輸入框的自動完成(autocomplete)、建議提示(input suggest)功能,支持ajax數據加載。

http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/

demo1:http://jquery.bassistance.de/autocomplete/demo/

demo2:http://www.ajaxdaddy.com/demo-jquery-autocomplete.html

docs:Autocomplete Docs

但唯一遺憾的是,在對中文輸入法打開時,firefox3.0中是對中文拼音的自動匹配,而對輸入後的中文無法及時觸發匹配;而在我的IE6.0下,則無此問題。 原因分析: Autocomplete插件對用戶輸入字符的觸發自動匹配是通過」keydown」事件進行的(可分析jquery.autocomplete.js第 92行),在IE6中,當輸入法打開時,輸入的字符是不會觸發」keydown」的,只有中文輸入完畢才觸發之,所以中文輸入和latin文沒有區別的;但在firefox3.0下,無論輸入法打開否,按鍵都會觸發」keydown」事件,所以造成中文輸入完畢,自動匹配的是剛才打出的部分中文拼音字母。 ------所以只有Firefox有問題。 解決方法: 網上查到的最多做法是修改jquery.autocomplete.js第92行,將」keydown」替換為」keyup」,但這個不是根本辦法,雖然這樣改後可在firefox中及時對輸入的中文進行自動匹配,但將原插件中回車、tab等重要的事件機制破壞了,比如這樣改後,如果你的input是在一個form裡的話,回車從原來的將選定項輸入到input中變為了直接提交form表單了,這並不是我們想要的。 我的方法原理是,補充一個原插件觸發查詢的事件,就是當input輸入欄發生字符變化時,重新進行查詢(調用其內部的onChange函數),這裡主要針對firefox而言,因為我們的系統訪問最多的是IE和firefox。而恰好firefox有一個input變化的事件就是oninput,那麼我們只要在原jquery.autocomplete.js第199行,插入如下代碼:

 

插入後,代碼大概如下:

原文:http://www.jb51.net/article/20332.htm

arrow
arrow
    全站熱搜

    carllee413 發表在 痞客邦 留言(1) 人氣()