大家经常会遇到input输入框中只能输入特定某种或者几种类型的字符的限制,以数字为例:
1、目前个人比较推荐的做法,原因:(一)兼容性不存在问题,(二)如果限制类型改变简单改变正则表达式即可。
html中:
<input οnkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" maxlength="3">
虽然是输入非数字之后进行空替换,并不是直接不允许输入,但是不存在兼容性问题,而且本身写法简单并且改变限制类型之后替换正则表达式也很容易实现。
下面网站提供了一些相应正则表达式的写法,具体使用请验证,我并没有对这些进行验证:
http://jingyan.baidu.com/article/624e74599410d634e8ba5a0a.html
2、效果很好,直接控制不允许输入非数字,但是最大的不足就是存在兼容性问题
<input οnkeydοwn="onlyNum()" style="IME-MODE: disabled;" maxlength="2">
js中:
function onlyNum() {
if(!(event.keyCode==46)&&!(event.keyCode==8)&&!(event.keyCode==37)&&!(event.keyCode==39))
if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
event.returnValue=false;
}
IME-MODE是css3的新特性,disabled为关闭输入法;但是经过实际使用发现,如果不关闭输入法,那么js的方法就是不好用的,那么关闭输入法的支持范围是什么呢,如下:
那么这种方法就存在兼容性问题。