Нижеприведённый код после blur из пустого поля ввода бесконечно выдаёт alert.
Почему?
В каких браузерах/ОС наблюдается это поведение?
ОС: Ubuntu 14.04.5 LTS
Браузер: Google Chrome 55.0.2883.87 (64-bit)
let limit = 0; // Ограничиваем число алертов, этот limit не относится к вопросу
function valid(el) {
if (!el.value && limit++<3) {
alert('Value is empty');
el.focus();
} else limit = 0;
}
<input onblur="valid(this)">
Дополнение:
Выполнение el.focus на другой итерации event loop прерывает порочный круг(хотя и не всегда):
function valid(el) {
if (!el.value) {
alert('Value is empty');
setTimeout(() => el.focus());
}
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости