2012-01-23 31 views
2

我試圖可靠地檢測中文字符何時插入到文本框中。如果我將keyup,keydown和keypress處理程序添加到輸入字段,則當用戶從IME(輸入法編輯器)選擇中文字符時,不會觸發任何事件。例如,在Mac /火狐中國簡體pinyan如果I型:Javascript - 檢測像Google文檔這樣的中文字符輸入

妮然後打1

我只收到「n」和關鍵彌補「1」 keydown事件。沒有按鍵事件被激發。注意:我使用GWT,但我認爲這不重要。

我很好奇Google文檔如何做到這一點。我特別注意到了中文,將'n'字符作爲文本附加到類爲「docs-texteventtarget-iframe」(但不是'i')的隱藏iframe中。我想他們會這樣做來檢測何時插入中文字符。

Google文檔如何知道輸入語言已更改爲中文?例如,如果我的輸入語言是英語,而且輸入「n」,則不會將其附加到該隱藏的iframe。有沒有什麼常用的技巧來檢測漢字的關鍵事件?

+0

您是否嘗試添加更改處理程序? –

回答

0

我懷疑你沒有收到按鍵事件,因爲輸入來自IME而不是鍵盤,就像粘貼到字段中時沒有獲得關鍵事件一樣。

您可以嘗試在文本框中添加ValueChangeHandler以查看是否捕獲您正在查找的事件。

1

當用戶使用IME(輸入法編輯器)輸入文本時,在輸入欄的內容發生變化之前,在IME組合窗口內會進行很多交互。您可以通過compositionstartcompositionend事件檢測到此情況。事實上,雖然作文正在進行中,但你絕對要做而不是想要從IME中竊取keyup/keydows事件。在文本輸入元素上,您可以在內容通過input事件更改時捕獲。