我最近遇到了以下代码,该代码针对正则表达式测试输入值。
它是用jQuery写的,并监听“按键”更改。
$('form').each(function (i, elem) {
$(elem).on('keypress', '.my-input-field', function (event) {
var theEvent = event || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode(key);
var regex = /[0-9]|\.|\t/;
if (!regex.test(key) && !theEvent.shiftKey) {
return false;
}
});
}
我想知道为什么您可能想听一个'keypress'(而不是说'input'或'change'),而且我对检查'window.event'的代码也有些困惑。和'theEvent.which'以及为什么需要它们,而不是仅需要'event'对象。
我认为可以使用JS简化代码,如下所示-
document.addEventListener('change', function(e) {
var regex = /[0-9]|\.|\t/;
if(e.target.classList.contains('my-input-field') {
if (!regex.test(e.target.value)) {
return false;
}
})
});
或者,甚至可能更直接,因为实际上没有显示验证错误,所以为什么不使用数字字段来防止输入任何非数字字符。
<input type="number" class="my-input-field">
只是想知道我是否在理解原始代码的工作时错过了一些基本知识。任何帮助表示赞赏。
谢谢,