表单验证
表单验证
沧海野狼 发表于1年前
表单验证
  • 发表于 1年前
  • 阅读 4
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

正则表达式限制输入框只能输入数字     

代码如下: 
<inpu type="text" onkeyup="this.value=this.value.replace(/[^/d]/g,'') " onafterpaste="this.value=this.value.replace(/[^/d]/g,'') " name="f_order" value="1"/> 

其中,onafterpaste防止用户从其它地方复制内容粘贴到输入框 


输入框只能输入字母和下横线的正则表达式 
<input onkeyup="this.value=this.value.replace(/[^_a-zA-Z]/g,'')" onpaste="this.value=this.value.replace(/[^_a-zA-Z]/g,'')"> 


输入框只能输入字母数字和下横线的正则表达式 
<input onkeyup="this.value=this.value.replace(/[^/w]/g,'')" onpaste="this.value=this.value.replace(/[^/w]/g,'')"> 
或 
<input onkeyup="this.value=this.value.replace(/[/W]/g,'')" onpaste="this.value=this.value.replace(/[/W]/g,'')">

不过上面使用的是替换的方法,因为替换的执行需要一定的时间,所以就存在个漏洞。就是只要你操作够快,在替换执行前你就提交了表单

那上面的限制就失效了。

要想没有上面的BUG,就得改下触发事件。上面是onkeyup,需要改成onkeypress。代码如下

<input  onkeypress="if (event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;" >

这里使用的是ASCII码,'0'的ASCII码为48,'9'的ASCII码为57。可以根据自己的需要修改条件。

这个没有处理粘贴事件,就是用户可以粘贴过来其它字符,只要把上面的onkeyup和onpaste事件加过来就可以了

共有 人打赏支持
粉丝 0
博文 16
码字总数 1195
×
沧海野狼
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: