scripts:validation

Валидация

Скрипты позволяют гибко валидировать значения полей для предотвращения ошибок заполнения форм.

Дата окончания не раньше даты начала

Добавим в форму «Отпуск» проверку дат начала и окончания отпуска. Эту форму мы создавали в разделе Быстрый старт. Добавим в скрипт формы следующий блок кода:

form.onChange(['Дата начала', 'Дата окончания'])
    .validate('Дата окончания', state => {
        const [start, end] = state.changes;

        if (start.date && end.date && start.date >= end.date)
            return {errorMessage: 'Не может быть раньше даты начала'};

        return null;
    });
Теперь при заполнении формы отобразится ошибка, если мы случайно выберем дату окончания отпуска раньше даты начала:

Заполнено хотя бы одно поле

Иногда бывает нужно проверить, заполнено ли одно из нескольких полей формы. Например, электронная почта или телефон в форме обратной связи. Добавить такую проверку поможет следующий скрипт:

form.onChange(['Эл. почта', 'Телефон'], true)
    .validate('Эл. почта', state => {
      const email = state.changes[0].text;
      const phone = state.changes[1].text;

      if (!email && !phone) return {errorMessage: 'Заполните электронную почту или телефон.'};

      return null;
    });

Здесь мы передаем список полей в метод onChange. Затем добавляем валидацию, внутри которой проверяем, что хотя бы одно из переданных полей заполнено. Если нет, пользователь увидит сообщение об ошибке, указанное в ключе errorMessage.

Была ли эта статья полезной?

Да, спасибо! Нет, остался вопрос