修改jQuery.Autocomplete插件 支持中文輸入法 避免TAB、ENTER鍵失效、導(dǎo)致表單提交
原因分析:
Autocomplete插件對(duì)用戶輸入字符的觸發(fā)自動(dòng)匹配是通過”keydown”事件進(jìn)行的(可分析jquery.autocomplete.js第 92行),在IE6中,當(dāng)輸入法打開時(shí),輸入的字符是不會(huì)觸發(fā)”keydown”的,只有中文輸入完畢才觸發(fā)之,所以中文輸入和latin文沒有區(qū)別的;但在firefox3.0下,無論輸入法打開否,按鍵都會(huì)觸發(fā)”keydown”事件,所以造成中文輸入完畢,自動(dòng)匹配的是剛才打出的部分中文拼音字母。 ------所以只有Firefox有問題。
解決方法:
網(wǎng)上查到的最多做法是修改jquery.autocomplete.js第92行,將”keydown”替換為”keyup”,但這個(gè)不是根本辦法,雖然這樣改后可在firefox中及時(shí)對(duì)輸入的中文進(jìn)行自動(dòng)匹配,但將原插件中回車、tab等重要的事件機(jī)制破壞了,比如這樣改后,如果你的input是在一個(gè)form里的話,回車從原來的將選定項(xiàng)輸入到input中變?yōu)榱酥苯犹峤籪orm表單了,這并不是我們想要的。
我的方法原理是,補(bǔ)充一個(gè)原插件觸發(fā)查詢的事件,就是當(dāng)input輸入欄發(fā)生字符變化時(shí),重新進(jìn)行查詢(調(diào)用其內(nèi)部的onChange函數(shù)),這里主要針對(duì)firefox而言,因?yàn)槲覀兊南到y(tǒng)訪問最多的是IE和firefox。而恰好firefox有一個(gè)input變化的事件就是oninput,那么我們只要在原jquery.autocomplete.js第199行,插入如下代碼:
.bind("input", function() {
// @hack:support for inputing chinese characters in firefox
onChange(0, true);
});
插入后,代碼大概如下:
...
...
jQueryinput.unbind();
jQuery(input.form).unbind(".autocomplete");
}).bind("input", function() {
// @hack:support for inputing chinese characters in firefox
onChange(0, true);
});
...
- 按Enter鍵觸發(fā)事件的jquery方法實(shí)現(xiàn)代碼
- jquery實(shí)現(xiàn)按Enter鍵觸發(fā)事件示例
- 基于jquery的button默認(rèn)enter事件(回車事件)。
- jquery 按鍵盤上的enter事件
- jQuery事件之鍵盤事件(ctrl+Enter回車鍵提交表單等)
- 基于Jquery的實(shí)現(xiàn)回車鍵Enter切換焦點(diǎn)
- Jquery利用mouseenter和mouseleave實(shí)現(xiàn)鼠標(biāo)經(jīng)過彈出層且可以點(diǎn)擊
- 基于Jquery的回車成tab焦點(diǎn)切換效果代碼(Enter To Tab )
- jQuery響應(yīng)enter鍵的實(shí)現(xiàn)思路
- jquery實(shí)現(xiàn)tab鍵進(jìn)行選擇后enter鍵觸發(fā)click行為
相關(guān)文章
利用jquery和BootStrap實(shí)現(xiàn)動(dòng)態(tài)滾動(dòng)條效果
這篇文章主要介紹了利用jquery和BootStrap實(shí)現(xiàn)動(dòng)態(tài)滾動(dòng)條效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-12-12兼容主流瀏覽器的jQuery+CSS 實(shí)現(xiàn)遮罩層的簡單代碼
比起使用注冊(cè)頁和登陸頁,網(wǎng)站在當(dāng)前頁使用遮罩層注冊(cè)和登陸的用戶體驗(yàn)要好不少。這里使用jQuery和CSS實(shí)現(xiàn)一個(gè)簡單的遮罩效果。2014-10-10jQuery實(shí)現(xiàn)動(dòng)態(tài)表單驗(yàn)證時(shí)文本框抖動(dòng)效果完整實(shí)例
這篇文章主要介紹了jQuery實(shí)現(xiàn)動(dòng)態(tài)表單驗(yàn)證時(shí)文本框抖動(dòng)效果,可實(shí)現(xiàn)表單元素左右晃動(dòng)的抖動(dòng)功能,涉及jquery中元素的匹配與動(dòng)畫animate效果實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-08-08使用jquery給input和textarea設(shè)定ie中的focus
在瀏覽網(wǎng)站的過程中,我們經(jīng)常可以看見當(dāng)鼠標(biāo)點(diǎn)擊后樣式改變的文本框和文本域,那么這種效果是如何實(shí)現(xiàn)的呢?2008-05-05jQuery獲取文本節(jié)點(diǎn)之 text()/val()/html() 方法區(qū)別
在jquery中val,text,html都能取到值,或加一個(gè)參數(shù)來賦值,那么它們有些什么區(qū)別?2011-03-03jQuery利用鍵盤上下鍵移動(dòng)表格內(nèi)容
這篇文章主要為大家詳細(xì)介紹了jQuery利用鍵盤上下鍵移動(dòng)表格內(nèi)容,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02基于Jquery的$.cookie()實(shí)現(xiàn)跨越頁面tabs導(dǎo)航實(shí)現(xiàn)代碼
基于Jquery的$.cookie()實(shí)現(xiàn)跨越頁面tabs導(dǎo)航實(shí)現(xiàn)代碼,需要的朋友可以參考下。2011-03-03