控制文本框只能輸入數字是一個很常見的需求,比如電話號碼的輸入、數量的輸入等,這時候就需要我們控制文本框只能輸入數字。在用js控制之后在英文輸入法的狀態下去敲擊鍵盤上的非數字鍵是輸不進去的,然而當你轉到中文輸入法的時候輸入的是中文,再按空格或回車鍵,中文或英文字母就輸進去了,這時候就需要我們在文本框得到焦點的時候把輸入法關閉,就是不響應輸入法的切換。如下語句可以實現這樣的功能。
通過keyCode來處理
下面的語句是用jquery寫的,控制class為checkNum的文本框只能輸入數字和小數點。
//監聽鍵盤,只允許輸入數字和小數點
$(".checkNum").keypress(function(event) { var keyCode = event.which; if (keyCode == 46 || (keyCode >= 48 && keyCode <=57)) return true; else return false; }).focus(function() { this.style.imeMode='disabled'; });
imeMode有四種形式,分別是:
active 代表輸入法為中文
inactive 代表輸入法為英文
auto 代表打開輸入法 (默認)
disable 代表關閉輸入法
通過正則表達式來處理
/*JQuery 限制文本框只能輸入數字*/ $(".NumText").keyup(function(){ $(this).val($(this).val().replace(/D|^0/g,'')); }).bind("paste",function(){ //CTR+V事件處理 $(this).val($(this).val().replace(/D|^0/g,'')); }).css("ime-mode", "disabled"); //CSS設置輸入法不可用 /*JQuery 限制文本框只能輸入數字和小數點*/ $(".NumDecText").keyup(function(){ $(this).val($(this).val().replace(/[^0-9.]/g,'')); }).bind("paste",function(){ $(this).val($(this).val().replace(/[^0-9.]/g,'')); //粘貼的不是數字,則替換為''
//或 return false; 禁用粘貼功能 }).css("ime-mode", "disabled"); //CSS設置輸入法不可用