Пользовательское сообщение проверки Bootstrap 4 на самом деле отображается с использованием следующего правила:
.was-validated .form-control:invalid ~ .invalid-feedback,
.was-validated .form-control:invalid ~ .invalid-tooltip,
.form-control.is-invalid ~ .invalid-feedback,
.form-control.is-invalid ~ .invalid-tooltip {
display: block;
}
Тильда ~
- это братский комбинатор в CSS, который работает только тогда, когда возникает ошибка проверки, как показано ниже:
<input type="text" class="form-control" required>
<div class="invalid-feedback">
The text field is mandatory
</div>
, где оба элемента .form-control
и .invalid-feedback
находятся на одном уровне.
Но в моем случае поле ввода (переключатели) намного глубже, чем .invalid-feedback
. Поэтому я добавил дополнительный код для отображения ошибки проверки с помощью API JavaScript HTML5:
// ...
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
var theRadio = form.querySelector('input[type=radio]');
if (theRadio.checkValidity() === false) {
theRadio.parentNode.parentNode.classList.add('group-invalid');
} else {
theRadio.parentNode.parentNode.classList.remove('group-invalid');
}
}
// ...
Это добавит класс .invalid-group
к объему .btn-group
, используя .parentNode.parentNode
(дважды),так что мы можем сделать somce стили:
.was-validated {
.group-invalid + .invalid-feedback {
display: block;
}
}
Таким образом, появится ошибка валидации, но она не исчезнет [когда она действительна] до повторной отправки формы.