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