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

字体大小: 中小 标准 ->行高大小: 标准
正则表达式限制输入框只能输入数字      

 

代码如下: 
<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事件加过来就可以了

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/67593.html