У меня есть поле ввода, которое я хотел бы проверить, когда пользователь либо нажимает клавишу ввода, либо щелкает от него, для этого я использую события keypress
и blur
. Если ввод не прошел проверку, вызывается окно предупреждения.
Я заметил, что в IE (все версии), если я нажимаю ввод с недопустимым вводом, по какой-то причине запускаются события нажатия клавиш и размытия (я подозреваю, что это окно предупреждения, но оно не делает этого в FF / Chrome) и он показывает два одинаковых окна предупреждений. Как сделать так, чтобы показывалась только одна?
РЕДАКТИРОВАТЬ: В FF / Chrome я теперь заметил, что второе окно предупреждения появляется, когда я нажимаю в любом месте после попытки подтвердить с помощью ввода.
Упрощенный код:
$("#input-field").keypress(function(event) {
if (event.keycode == 13) {
event.stopPropagation();
validate();
return false;
}
});
$("#input-field").blur(function() {
validate();
});
function validate() {
if ($("#input-field").val() == '') {
alert("Invalid input");
}
}
РЕДАКТИРОВАТЬ: Ага. Не совсем исправление, но отдельная деталь, которую я забыл - мне нужно восстановить недопустимый ввод до его ранее действительного значения, поэтому, когда функция проверки снова проверяет значение, она не терпит неудачу дважды.