Недавно я наткнулся на следующий код, который проверяет входное значение на соответствие регулярному выражению.
Он написан с помощью 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.