Проверка нажатия клавиш и регулярных выражений - PullRequest
0 голосов
/ 22 ноября 2018

Недавно я наткнулся на следующий код, который проверяет входное значение на соответствие регулярному выражению.

Он написан с помощью 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;
        }
    });
}

I 'Мне интересно знать, почему вы можете слушать «нажатие клавиш» (а не «ввод» или «изменение»), и я также немного запутался в коде, который проверяет «window.event» и «theEvent».какие 'и зачем они нужны, а не только объект' события '.

Мне кажется, что код можно упростить (с помощью 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">

Просто любопытно узнать, пропустил ли я что-то фундаментальное в моемпонимание того, что делает оригинальный код.Любая помощь высоко ценится.

Спасибо, J.

...