如何在網頁輸入時停用中文輸入法? (限IE/FF)

專案有個需求,網頁中有些<INPUT>輸入欄位只接受英數字,並加掛了Javascript按鍵事件,依特定規則對輸入字元進行過濾。

接獲使用者回報,當使用新注音輸入法操作該輸入欄位時,會產生非預期的結果。猜想應是Javascript事件得配合輸入法的某些特殊行為進行調整,但轉念一想,由於專案規格已限定瀏覽器版本,何不試著找看看瀏覽器的特異功能來解問題? 在Web上實現WinForm常見的操作情境 -- 當輸入某個TextBox時暫時停用中文輸入法。

結果我找到了ime-mode,一個只有IEFireFox支援的特殊CSS屬性。當設成ime-mode: disabled,若輸入焦點停在該INPUT,Windows會自動停用中文輸入法,切回英文輸入模式。若不在意跨瀏覽器的需求,這是個實用的好功能!

用一個例子示範:

<input type="text" id="t1" />
<input type="text" id="t2" style="ime-mode:disabled" />
<input type="text" id="t3" />

操作測試,一開始焦點停在t1,切換為中文輸入法(新注音、新倉頡... 等),輸入一個中文字;按Tab移到t2時,會發現中文輸入法被停用了;再按Tab移到t3,中文輸入法就又回來了。

就醬,很簡單易用吧!

歡迎推文分享:
Published 13 October 2010 02:54 PM 由 Jeffrey
Filed under: , ,
Views: 17,085



意見

# FormatC said on 12 October, 2010 10:18 PM

之前工作也有類似的需求,不過好像是用copy-past  貼上中文就破功了,後來在server side又做檢查

搞的很累

# louisdeng said on 13 October, 2010 05:38 AM

頁面上的檢核應該是為了user friendly而做的

server端的檢查還是要做的,避免系統拋出Exception

兩者的目的不太一樣

一點淺見

# joe said on 29 October, 2010 06:13 PM

哇真是好東西,謝謝分享(繼續挖寶中..cc)

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<October 2010>
SunMonTueWedThuFriSat
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication