JavaScript 实现 input 标签只能输入数字(且不能输入e或者其他各种符号)

[javascript] view plain copy

  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的语法解释如下:

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,就报错就行了。或者怎么处理,看你逻辑要求了

转载于:https://my.oschina.net/youfen/blog/3058470

猜你喜欢

转载自blog.csdn.net/weixin_34116110/article/details/91871828
今日推荐