自己用是倉頡輸入法,Kendo UI數字欄位(NumericTextBox)一直用得很開心,直到同事回報: NumericTextBox配上IE瀏覽器,使用注音輸入法時無法用鍵盤數字區(鍵盤右方的數字盤)輸入數字,使用Chrome或Firefox則無此問題。[Bug示範 (用IE+注音輸入法可重現問題)]
追進原始碼,判斷問題出在NumericTextBox的keydown事件,使用注音輸入法時,數字盤的按鍵代碼在IE與其他瀏覽器可能不同導致差異。原本已經捲好袖子要開始Hacking,福至心靈想到另一個巧妙解法: -ms-ime-mode!
既然是IE獨有的問題,用IE獨有的功能解決剛剛好! 遇到數字欄位時強迫把中文輸入法關掉,就不用煩惱注音輸入法的按鍵代碼跟別人有什麼不同。在CSS中加入一條新規則:
/* kendoNumericTextBox 注音數字輸入問題修正 */
.k-numeric-wrap > input
{
/* 在IE下啟用注音輸入法無法用數字盤輸入,故停用IME */
-ms-ime-mode: disabled;
ime-mode: disabled;
}
靠著一條CSS規則,談笑間茶包灰飛煙滅,不亦快哉! 線上展示