【发布时间】:2010-10-31 07:34:29
【问题描述】:
我有一个文本框,它不需要让用户输入任何特殊字符。他可以输入:
- A-Z
- a-z
- 0-9
- 空间。
还有一个条件是第一个字母应该是字母。 如何在每次按键时进行 JavaScript 验证?
【问题讨论】:
标签: asp.net javascript
我有一个文本框,它不需要让用户输入任何特殊字符。他可以输入:
还有一个条件是第一个字母应该是字母。 如何在每次按键时进行 JavaScript 验证?
【问题讨论】:
标签: asp.net javascript
添加一个 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.
}
}
或者只检查按下的键,您可以从事件中获取键码,如下所示:
onKeyUp="javascript:checkChar(event);"
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)
或者甚至使用第二种方法,但也传递文本框,这样您就可以获得它的全部价值。
【讨论】:
这个函数将检查给它的字符串是否符合这些条件:
function checkvalue(value) {
return value.match( /[A-Za-z][A-Za-z0-9 ]*/ );
}
然后您可以在 onkeypress 事件中使用它,并传入当前值。
【讨论】:
现在我们有了 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。
【讨论】:
您应该在文本框的 onkeydown 事件处理程序中检查按下的键,如果它不符合条件,则来自处理程序的return false。使用 keyup 将不允许您阻止 char 实际输入到文本框中。
【讨论】:
我认为您不应该检查每个按键,这对用户来说可能非常烦人。
只需在失去焦点或提交时检查输入。
为此,您可以使用正则表达式并使用此模式:
`/[a-z]{1}[a-z0-9]/i`
你也可以看看JQuery Validation Plugin
【讨论】: