33 lines
1.7 KiB
JavaScript
33 lines
1.7 KiB
JavaScript
|
// Модуль используется для валидации форма на странице
|
|||
|
|
|||
|
// Функция для проверки элементов управления формы на заполненность и корректность
|
|||
|
const checkForm = (event) => {
|
|||
|
// Получаем ссылку на форму
|
|||
|
const form = event.target;
|
|||
|
|
|||
|
// https://learn.javascript.ru/bubbling-and-capturing
|
|||
|
// Если какой-либо элемент формы не заполнен или заполнен с ошибками, то
|
|||
|
if (!form.checkValidity()) {
|
|||
|
// Отменяем действие по умолчанию
|
|||
|
event.preventDefault();
|
|||
|
// Предотвратить всплытие события
|
|||
|
// Когда на элементе происходит событие, обработчики сначала срабатывают на нём,
|
|||
|
// потом на его родителе, затем выше и так далее, вверх по цепочке предков.
|
|||
|
// event.stopPropagation();
|
|||
|
}
|
|||
|
// добавляет к форме класс was-validated
|
|||
|
form.classList.add("was-validated");
|
|||
|
};
|
|||
|
|
|||
|
// Функция для привязки обработчика событий
|
|||
|
const myValidation = () => {
|
|||
|
// Поиск всех форма с классом .needs-validation
|
|||
|
const forms = document.querySelectorAll("form.needs-validation");
|
|||
|
|
|||
|
// Установка функции checkForm в качестве обработчика события submit
|
|||
|
forms.forEach((form) => form.addEventListener("submit", checkForm));
|
|||
|
};
|
|||
|
|
|||
|
// Экспорт функции myValidation
|
|||
|
export default myValidation;
|