/
ondevelop
/
Mesto
Обзор
Документация
Войти
/
ondevelop
/
Mesto
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/components/validation.js
78 строк
3 KB
Stanislav Kozlovskiy
Исправлено
15 дек 2024, 15:37
15 дек 2024, 15:37
fbb58ab
Код
Авторство
О чём код?
const showInputError = (formElement, inputElement, errorMessage, settings) => { const errorElement = formElement.querySelector(`.${inputElement.id}-error`); inputElement.classList.add(settings.inputErrorClass); errorElement.textContent = errorMessage; errorElement.classList.add(settings.errorClass); }; const hideInputError = (formElement, inputElement, settings) => { const errorElement = formElement.querySelector(`.${inputElement.id}-error`); inputElement.classList.remove(settings.inputErrorClass); errorElement.classList.remove(settings.errorClass); errorElement.textContent = ''; }; const checkInputValidity = (formElement, inputElement, settings) => { if (inputElement.validity.patternMismatch) { inputElement.setCustomValidity(inputElement.dataset.errorMessage); } else { inputElement.setCustomValidity(""); } if (!inputElement.validity.valid) { showInputError(formElement, inputElement, inputElement.validationMessage, settings); } else { hideInputError(formElement, inputElement, settings); } }; const hasInvalidInput = (inputList) => { return inputList.some((inputElement) => !inputElement.validity.valid); }; const toggleButtonState = (inputList, buttonElement, settings) => { if (hasInvalidInput(inputList)) { buttonElement.disabled = true; buttonElement.classList.add(settings.inactiveButtonClass); } else { buttonElement.disabled = false; buttonElement.classList.remove(settings.inactiveButtonClass); } }; const setEventListeners = (formElement, settings) => { const inputList = Array.from(formElement.querySelectorAll(settings.inputSelector)); const buttonElement = formElement.querySelector(settings.submitButtonSelector); toggleButtonState(inputList, buttonElement, settings); inputList.forEach((inputElement) => { inputElement.addEventListener('input', () => { checkInputValidity(formElement, inputElement, settings); toggleButtonState(inputList, buttonElement, settings); }); }); }; export const enableValidation = (settings) => { const formList = Array.from(document.querySelectorAll(settings.formSelector)); formList.forEach((formElement) => { formElement.addEventListener('submit', (evt) => { evt.preventDefault(); }); setEventListeners(formElement, settings); }); }; export const clearValidation = (formElement, settings) => { const inputList = Array.from(formElement.querySelectorAll(settings.inputSelector)); const buttonElement = formElement.querySelector(settings.submitButtonSelector); inputList.forEach((inputElement) => { hideInputError(formElement, inputElement, settings); }); buttonElement.disabled = true; buttonElement.classList.add(settings.inactiveButtonClass); };