您的位置:首页 > 其它

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

2009-12-27 20:01 696 查看
正则表达式限制输入框只能输入数字

代码如下:
<input 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事件加过来就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: