我正在尝试在事件过程中对用户文本输入进行信息验证keydown
。我试图在keydown
事件中验证的原因是因为我不想input
在开头的框中显示那些被认为是非法的字符。
我正在写的验证是这样的,
function validateUserInput(){
var code = this.event.keyCode;
if ((code<48||code>57) // numerical
&&code!==46 //delete
&&code!==8 //back space
&&code!==37 // <- arrow
&&code!==39) // -> arrow
{
this.event.preventDefault();
}
}
我可以继续这样下去,但是我看到了这个实现的缺点。例如,这些是:
- 当我放置更多要检查的条件时,条件语句变得越来越长。
keyCodes
可能因浏览器而异。- 我不仅要检查什么是不合法的,还要检查什么是例外的。在上面的示例中delete,backspace、 和arrow键是例外的。
但是我不想失去的功能是不必在中显示输入,textarea
除非它通过验证。(如果用户尝试在 中输入非法字符,则textarea
根本不会出现任何内容)这就是为什么我不对keyup
事件进行验证的原因。
所以我的问题是:
- 有没有比通过
keydown
检查更好的方法来验证事件中的输入?keyCode
keyCode
- 除了事件之外,还有其他方法可以
keydown
在浏览器显示之前捕获用户输入吗?以及一种对其进行验证的方法?