У меня есть поле ввода, которое я хотел бы проверить, когда пользователь нажимает клавишу ввода или щелкает по нему, для этого я использую события 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");
}
}
РЕДАКТИРОВАТЬ: Ах-ха.Не совсем исправление, но отдельная деталь, которую я забыл - мне нужно восстановить недопустимый ввод до его ранее действительного значения, поэтому, когда функция validate проверяет значение снова, это не дает сбоя дважды.