輸入法下keyup失效的解決方案
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
在某些情況下,比如自動補全(auto complete)的輸入框中,需要使用keyup事件來監(jiān)聽鍵盤的輸入以迅速作出回應。
關(guān)鍵在于keyup, 如果世界是美好的,那么就不會有這篇blog. 可是…… 世界是不美好的。我們活在中文世界,我們要用輸入法。在輸入法開啟的情況下,您會碰到不美好的事情:keyup失效。對于您綁定到keyup的任何回調(diào)函數(shù),除非您把輸入法切換回英文狀態(tài),否則它會無動于衷。如果能稱之為bug,我會很高興,因為bug會有修復的可能,如果是特征(feature),那么,我只好嘆息一下。 問題 在開啟輸入法的情況下,三個瀏覽器的具體問題如下: ●IE:觸發(fā)keydown和keyup, 不觸發(fā)keypress. 能夠獲得輸入值。 ●Firefox:觸發(fā)keydown和keypress, 不觸發(fā)keyup. 輸入值未能獲得。在回車后會觸發(fā)keyup, 可獲得輸入值。 ●Opera:keydown, keypress和keyup都不觸發(fā),輸入值也未能獲。 (如果您能幫我試用一下Safari,我會很高興并謝謝您。這里有一個 測試頁面 ) 解決方案 總結(jié)出以上問題,沒有興奮反而陷入絕望,因為沒有g(shù)oogle出解決方案(是的,對于拉丁語系的老外來說,不會存在輸入法)。但是,wait, 谷歌搜索的自動補全不是工作得好好的嗎?于是研究一下這個 http://www.google.cn/ac.js。嘿嘿,雖然混淆得還可以,但還是可以發(fā)現(xiàn)蛛絲馬腳的。它使用一個計時器,當輸入框處于聚焦(focus)狀態(tài)時,每10秒執(zhí)行一次回調(diào)函數(shù)。 雖然挺耗資源(所以建議在輸入框失焦(blur)時,一定要清除這個計時器),但也只能如此了。作前端開發(fā)的,不僅要與語言(JavaScript, CSS, HTML) 斗,還要與瀏覽器斗,其樂無窮也。 該文章在 2011/3/11 0:14:46 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |