У меня было несколько версий элементов bootstrap-select в одной из моих форм, и мне было очень трудно заставить это работать. В приведенном ниже методе не будет отображаться галочка или x на вводе, но будут правильно отображаться поля недопустимая обратная связь и действительная обратная связь.
Используя совет из ответа secretagentmango, вы можете создать функцию, которая перебирает все ваши входные данные с помощью класса «selectpicker», берет их родительский элемент группы форм, а затем находит дочерние элементы «valid-feedback» и «invalid-feedback» элементы, чтобы добавить или удалить класс d-блока и скрыть / показать их.
function bsSelectValidation() {
if ($("#myForm").hasClass('was-validated')) {
$(".selectpicker").each(function (i, el) {
if ($(el).is(":invalid")) {
$(el).closest(".form-group").find(".valid-feedback").removeClass("d-block");
$(el).closest(".form-group").find(".invalid-feedback").addClass("d-block");
}
else {
$(el).closest(".form-group").find(".invalid-feedback").removeClass("d-block");
$(el).closest(".form-group").find(".valid-feedback").addClass("d-block");
}
});
}
}
Теперь вам нужно запустить эту функцию после отправки формы, и вы можете добавить ее непосредственно в образец кода из Bootstrap Docs:
(function () {
'use strict';
window.addEventListener('load', function () {
// Fetch all the forms we want to apply custom Bootstrap validation styles to
var forms = document.getElementsByClassName('needs-validation');
// Loop over them and prevent submission
var validation = Array.prototype.filter.call(forms, function (form) {
form.addEventListener('submit', function (event) {
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
bsSelectValidation();
}, false);
});
}, false);
})();
Единственное, что в приведенном выше коде отличается от примера начальной загрузки, - это вызов нашей новой функции «bsSelectValidation».
Теперь вам нужно отслеживать изменения в форме, чтобы автоматически обновлять классы d-блока и исправлять допустимые / недопустимые сообщения, когда люди вносят изменения в форму:
$('#myForm').change(bsSelectValidation);
Теперь выбранные вами меню должны правильно отображать блоки действительной обратной связи и недопустимой обратной связи при отправке или изменении формы.
person
CharlosIsBadAtThis
schedule
03.10.2019