input只能输入数字等

大家经常会遇到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的方法就是不好用的,那么关闭输入法的支持范围是什么呢,如下:

那么这种方法就存在兼容性问题。






  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值