我有一个文本框,它不需要允许用户输入任何特殊字符。他可以输入:
另一个条件是第一个字母应该是字母。 如何在每个按键上进行JavaScript验证?
答案 0 :(得分:9)
添加onKeyUp =“javascript:checkChar(this);”到输入框。
function checkChar(tBox) {
var curVal = tBox.value;
if ( /[^A-Za-z0-9 ]/.test(curVal) ) {
//do something because he fails input test.
}
}
alernatively检查按下的键,你可以从事件中获取键码,如下所示:
的onkeyup = “JavaScript的:checkChar(事件);”
function checkChar(e) {
var key;
if (e.keyCode) key = e.keyCode;
else if (e.which) key = e.which;
if (/[^A-Za-z0-9 ]/.test(String.fromCharCode(key))) {
//fails test
}
}
错过了关于第一个字符的部分,但你可以像第一个例子那样对文本框值进行测试:
/^[A-Za-z]/.test(curVal)
甚至使用第二种方法,但也传递文本框,这样你就可以获得它的全部价值。
答案 1 :(得分:1)
此函数将检查为其指定的字符串:
function checkvalue(value) {
return value.match( /[A-Za-z][A-Za-z0-9 ]*/ );
}
然后,您可以在onkeypress事件中使用它,传入当前值。
答案 2 :(得分:0)
你应该在文本框的onkeydown事件处理程序中检查按下的键,如果它不符合条件,那么来自处理程序的return false
。使用keyup将不允许您阻止在文本框中实际输入char。
答案 3 :(得分:0)
我认为您不应该检查每个按键,这对用户来说可能非常烦人。
只要在丢失焦点或提交时检查输入。
为此,您可以使用正则表达式并使用此模式:
`/[a-z]{1}[a-z0-9]/i`
您还可以查看JQuery Validation Plugin
答案 4 :(得分:0)
既然我们有HTML5,您甚至不需要使用JavaScript。您可以使用pattern
属性。
<input type="text" pattern="[A-Za-z][A-Za-z0-9 ]*" title="Description of format" />
pattern
属性应包含定义格式的regular expression。 title
应该包含对该格式的可读描述。
然后在验证时,浏览器会根据浏览器勾勒出红色字段和/或显示一条消息,说明您对格式的描述。
本教程详细介绍:HTML5 Input Validation Tutorial。