Показать сообщение отдельно
  #1 (permalink)  
Старый 08.08.2022, 16:07
Новичок на форуме
Отправить личное сообщение для cheriko Посмотреть профиль Найти все сообщения от cheriko
 
Регистрация: 08.08.2022
Сообщений: 1

Оптимизировать функцию валидации
У меня есть функция валидации, которая добавляет классы элементам массива и селекторам. Вот так:

requiredBoxes.forEach(function (input) {
        if (requiredCheckedBoxes.length === 0) {
            input.classList.add('input-error');
        } else {
            input.classList.remove('input-error');
        }
    });

    if (!validateEmail(emailInput.value)) {
        emailInput.classList.add('input-error');
    } else {
        emailInput.classList.remove('input-error');
    }

    if (phoneInput.value.length < 16) {
        phoneInput.classList.add('input-error');
    } else {
        phoneInput.classList.remove('input-error');
    }


Мне нужно применять эту функцию в 2-х местах - addEventListener('submit') и addEventListener('blur').
Вопрос: как это все написать без повторений, учитывая, что добавлять-удалять классы нужно как у элементов массива, так и у отдельных селекторов?

Я ведь не могу вынести addEventListener за пределы цикла:
requiredInputs.forEach(function (input) {
      input.addEventListener('blur', () => {
          if (input.value === '') {
              input.classList.add('input-error');
          } else {
              input.classList.remove('input-error');
          }
      })
  });
Ответить с цитированием