按键和正则表达式验证

时间:2018-11-22 17:59:59

标签: javascript javascript-events keypress

我最近遇到了以下代码,该代码针对正则表达式测试输入值。

它是用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">

只是想知道我是否在理解原始代码的工作时错过了一些基本知识。任何帮助表示赞赏。

谢谢,

0 个答案:

没有答案