Задать вопрос
@Magic6200

Как провести валидацию формы во время заполнения полей?

Как поправить код, чтобы во время заполнения полей формы происходила проверка сразу же, а при нажатии на кнопку "Отправить" ничего не происходило пока не будут заполнены верно все поля?
Также, чтобы ничего не происходило, если поля пусты изначально.
  • Вопрос задан
  • 232 просмотра
Подписаться 2 Простой Комментировать
Решение пользователя 0xD34F К ответам на вопрос (2)
0xD34F
@0xD34F Куратор тега JavaScript
Выносим код проверки корректности введённых данных в отдельную функцию, дёргаем её при отправке, и по событию input:

function validateInput($input, regex) {
  const result = regex.test($input.val());

  $input
    .closest('.form-group')
    .removeClass('has-success has-error')
    .addClass(result ? 'has-success' : 'has-error');	

  return result;
}

function validate() {
  return [
    validateInput($('#name'), /^[a-z]{2,16}$/i),
    validateInput($('#message'), /^[a-z]{15,100}$/i),
  ].every(Boolean);
}

$('form').on({
  input: validate,
  submit(e) {
    if (!validate()) {
      e.preventDefault();
    }
  },
});
Ответ написан