问题描述
如何控制JSP页面上的文本框只能输入数字,或只能输入字母,或只能输入特定字符,谢谢 问题补充:可是我们公司的自定义标签没有onbeforepaste事件suziwen 写道
解决方案
<html><body><script type="text/javascript">function noNumbers(e){var keynumvar keycharvar numcheckif(window.event) // IE{keynum = e.keyCode}else if(e.which) // Netscape/Firefox/Opera{keynum = e.which}keychar = String.fromCharCode(keynum)numcheck = /d/return !numcheck.test(keychar)}</script><form><input type="text" onkeypress="return noNumbers(event)" /></form></body></html>
解决方案二:
onbeforepaste:监听执行粘贴操作前事件onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))" 整个语句的功能是,每当用户执行粘贴操作前,先取出剪贴板的内容字符串,删除不是数字的字符,只保留数字,然后再粘贴,而不是直接粘贴你也可以不要这个事件 ,只监听onkeyup事件 ,只是用户 通过复制粘贴可能不能控制 自定义标签最后肯定都会转换成HTML的INPUT元素,该元素就可以有这种onbeforepaste事件 ,,你可能得问你们公司开发这个标签 的人怎么把这个事件放上去而以,
解决方案三:
使用正则表达式监听文本域的ONKEYUP事件常用HTML正则表达式 1.只能输入数字和英文的: <input onkeyup="value=value.replace(/[W]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))" ID="Text1" NAME="Text1"> 2.只能输入数字的: <input onkeyup="value=value.replace(/[^d]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))" ID="Text2" NAME="Text2"> 3.只能输入全角的: <input onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))" ID="Text3" NAME="Text3"> 4.只能输入汉字的: <input onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))" ID="Text4" NAME="Text4">
解决方案四:
var nameReg=/^[a-z,A-Z,0-9,_]$/;只允许数字、26个英文字母或者下划线组成的字符串看看正则表达式吧,蛮简单的,呵呵
解决方案五:
<input type="text" id="test" onkeyup="replaceNumKeyUp(this);"/>function replaceNumKeyUp(obj) {obj.value = obj.value.replace(/[^0-9]/g,'');}
解决方案六:
用正则了。。。。
解决方案七:
使用正则表达式 用javascript实时校验
解决方案八:
你想找的是正则表达式?http://deerchao.net/tutorials/regex/regex.htm