у меня есть линия
document.getElementById("firstName").addEventListener("blur", validateField);
и :
validateField = (event) =>
{
const el = event.target;
}
Теперь я хочу вызвать функцию validateField() с соответствующим элементом в строке form.addEventListener('submit', function(event)
.
document.getElementById("firstName").blur(); // This is not getting called.
Но холодный вызов blur() не работает.
То, что я пытаюсь сделать, это заполнить сообщение о недопустимости начальной загрузки, когда форма вызывается и все еще недействительна.
el.classList.add('is-invalid');
el.nextElementSibling.innerHTML = "This field is required";
Пытаюсь избежать jQuery, так как я могу переключиться на загрузочную версию 5.
Я действительно думаю, что технически отправка формы не фокусируется, если пользователь не нажимает клавишу ввода для отправки. Альтернативный подход, возможно, заключается в том, что вы можете попытаться сосредоточиться на чем-то другом, а не на размытии конкретной вещи!
Следующий код работает для меня.
document.getElementById("frm").addEventListener('submit', function(event) {
event.preventDefault();
document.getElementById("firstName").blur();
});
<form action = "" id = "frm">
<input type = "text" id = "firstName" />
<input type = "submit" value = "Press Enter" />
</form>
Но для альтернативного решения:
document.getElementById("frm").addEventListener('submit', function(event) {
event.preventDefault();
document.getElementById("frm").focus();
});
#frm:focus {
outline: none;
box-shadow: none;
}
<form action = "" id = "frm" tabindex = "0">
<input type = "text" id = "firstName" />
<input type = "submit" value = "Press Enter" />
</form>
Пожалуйста, предоставьте минимальный воспроизводимый пример . Судя по вашему описанию, это должно работать так, как ожидалось: jsfiddle.net/w69fnmL0 Либо форма отправляется через щелчок, и событие размытия срабатывает перед отправкой, либо оно отправляется «неявно» (например, при нажатии Enter во вводе ) и в этом случае вызов
.blur()
вызовет синхронное срабатывание события размытия.