[javascript] view plain copy
- <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的语法解释如下:
ime-mode : auto | active | inactive | disabled
取值:
auto : 默认值。不影响IME的状态。与不指定 ime-mode 属性时相同
active : 指定所有使用IME输入的字符。即激活本地语言输入法。用户仍可以撤销激活IME
inactive : 指定所有不使用IME输入的字符。即激活非本地语言。用户仍可以撤销激活IME
disabled : 完全禁用IME。对于有焦点的控件(如输入框),用户不可以激活IME
IME 是指 Input Method Editors 输入法编辑器
(/[\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,就报错就行了。或者怎么处理,看你逻辑要求了