Закрывается модальное окно
Помогите пожалуйста, я не сильна в JS. Сделала вот такой код валидации:
let form = document.querySelector('.js-form'),
formInputs = document.querySelectorAll('.js-input');
form.onsubmit = function () {
let emptyInputs = Array.from(formInputs).filter(input => input.value === '');
formInputs.forEach(function (input) {
if (input.value === '') {
input.classList.add('error');
} else {
input.classList.remove('error');
}
});
if (emptyInputs.length !== 0) {
console.log('inputs not filled');
return false;
}
}
Вся суть в том: если поля заполнены он отправляет форму. А если не заполнены, то не отправляет - НО закрывает модальное окно с формой. Что нужно мне добавить в код, чтобы он не давал закрыть окно с пустыми полями при нажатии кнопки "отправить"?
Модальное окно:
<div class="modal fade" id="Order" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<form class="form js-form" method="POST" action="./php/telegrambot.php">
<div class="modal-header bg-danger border-bottom border-primary border-4">
<h1 class="modal-title fs-5" id="exampleModalLabel">Отправка формы</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body bg-light">
<div class="row mb-3">
<div class="col-12">
<label class="form-label"><b>Имя:</b></label>
<input class="form-control input js-input" maxlength="20" id="FirstNameInput" placeholder="Как к Вам обращаться" name="FirstName">
</div>
<div class="col-12">
<label class="form-label"><b>Контактный номер:</b>
</label>
<input class="form-control input js-input" maxlength="11" id="PhoneInput" placeholder="Ваш телефон для связи" name="Phone">
</div>
</div>
</div>
<div class="modal-footer bg-danger border-top border-primary border-4">
<div class="row justify-content-end">
<div class="col-4 content-center">
<button type="submit" class="btn btn-outline-primary border-2 text-nowrap me-2" data-bs-toggle="modal">Отправить</button>
</div>
</div>
</div>
</form>
</div>
</div>
Ответы (1 шт):
Автор решения: Alexander Kiselev
→ Ссылка
Просто уберите с кнопки атрибут data-bs-toggle="modal" и закрывайте модальное окно, когда форма успешно отправлена!
let form = document.querySelector('.js-form'),
formInputs = document.querySelectorAll('.js-input');
form.onsubmit = function () {
let emptyInputs = Array.from(formInputs).filter(input => input.value === '');
formInputs.forEach(function (input) {
if (input.value === '') {
input.classList.add('error');
} else {
input.classList.remove('error');
}
});
if (emptyInputs.length !== 0) {
console.log('inputs not filled');
return false;
}
// Если всё хорошо, то закрываем модальное окно
$('#MyModal').modal('close')
}
Это сделать поведение окна контролируемым