JavaScript 實現 input 標籤只能輸入數字(且不能輸入e或者其餘各類符號)

[javascript] view plain copyjavascript

  1. <span style="font-family: Arial, Helvetica, sans-serif;"><input id="xxx" type="number" onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))" style="width:475px;ime-mode:Disabled" ></span>  

 

ime-mode的語法解釋以下:java

ime-mode : auto | active | inactive | disabled正則表達式

取值:express

auto  : 默認值。不影響IME的狀態。與不指定 ime-mode 屬性時相同編輯器

active  : 指定全部使用IME輸入的字符。即激活本地語言輸入法。用戶仍能夠撤銷激活IMEspa

inactive  : 指定全部不使用IME輸入的字符。即激活非本地語言。用戶仍能夠撤銷激活IME.net

disabled  : 徹底禁用IME。對於有焦點的控件(如輸入框),用戶不能夠激活IMEblog

 

IME 是指 Input Method Editors 輸入法編輯器ip

 

(/[\d]/.test(String.fromCharCode(event.keyCode)))

我解釋下這句話的意思吧:
js裏面
一對分隔符之間放入表達式模式的各類組件來構造一個正則表達式
模式如:/expression/
也就是說上面的正則表達式是:/[\d]/
去掉分隔符的話就是:[\d]
按正則的理解,這個  [\d]  的限制等價於 [0-9]  
也就是說,只要是個數字就OK,並且這個只能限制單個字符。
並且.test();方法的參數裏面, event.keyCode 得到的是你按下的鍵盤上的某個鍵的 ASCII碼,獲得的是個數字
ASCII碼 : 小a 97 大A 65
String.fromCharCode(97) 的執行結果就是 「a」
綜上所述,那麼這個正則表達式,只能check單個字符的錄入,要是check整個錄入結果,好比你打算只能輸入一個小數點,那就check不住了。由於他每次執行,只針對你的某次按下的按鍵進行check。要想check錄入的結果是小數的,就的把當前的值取到,而後在function裏面處理啦。也就是再寫個js方法,check不OK,就報錯就好了。或者怎麼處理,看你邏輯要求了get

相關文章
相關標籤/搜索