Вы здесь
extjs form custom validator или как сделать сложный валидатор сразу на два поля
Если возникла необходимость сделать в extjs custom form validator, или проще говоря свой валидатор на форме, то вот один из вариантов решения.Рассмотрим задачу. Есть поисковая форма на extjs. В этой форме есть два поля с датой, которые задают интервал поиска. Нужно произвести проверку на длинну интервала, и если временной интервал превышает 31 день, то выдать сообщение об ошибке.
Фирменное руководство extjs по этому поводу не дает никаких примеров. А те примеры, что есть в сети предлагают решение на основе всплывающего окна с сообщением об ошибке. Я же предлагаю решение, работающее так же как и родные валидаторы.
Создадим наши поля на форме, заполним их значениями по-умолчанию и навесим фунецию проверки значений на правильность:
А вот и собственно функция проверки:
На ней остановлюсь подробнее. Сначала мы вычисляем временной интервал между начальной и конечной датами. getValue возвращает обьект типа date. а его метод format форматирует дату так как нам нужно. Мы ее переведем в секунды. Потом отнимем от конечной даты начальную и проверим, чтоюы этот интервал был не более 31 дня.
Если интервал больше 31 дня, то при помощи метода markInvalid мы помечаем оба поля нашим сообщением об ошибке, а если меньше, то при помощи clearInvalid сбрасываем у обоих полей статус ошибки.
В результате имеем форму, на которой валидатор обрабатывает сразу два поля.
Примечание:
При вызове
ваша функция валидатор выполнится один лишний раз: собственно при создании формы.
Попробуйте вместо этого свойство validate
Комментарии
спасибо, очень помогло!
спасибо, очень помогло!