Проверка HTML5 оформлена по-разному в разных браузерах.Хотя поддержка браузеров все будет препятствовать отправке формы, если она недействительна, все, что находится за ее пределами, является решением о дизайне браузера.
Вы можете попытаться навязать определенное поведение, используя JavaScript.Например, если вы хотите немедленную обратную связь для неверного ввода, вы можете прикрепить обработчик к событию input
.
document.querySelector('input').addEventListener('input', function(e) {
if (!e.currentTarget.checkValidity()) {
e.currentTarget.classList.add('invalid');
} else {
e.currentTarget.classList.remove('invalid');
}
});
.invalid {
background-color: red;
}
<form>
<input type="text" pattern="[A-Za-z]{3}">
<input type="submit">
</form>
Очевидно, что вы захотите улучшить пользовательский стиль и что-то, что не конфликтует с собственным стилем "недопустимого состояния" основных браузеров, ноэто, по крайней мере, заставляет вас начать работу в правильном направлении.
Вы также можете заставить браузер сообщать о действительности события input
.Но вы можете обнаружить, что поведение большинства браузеров для reportValidity
слишком громкое, чтобы показывать на каждом недействительном input
.
document.querySelector('input').addEventListener('input', function(e) {
e.currentTarget.reportValidity();
});
<form>
<input type="text" pattern="[A-Za-z]{3}">
<input type="submit">
</form>