Переопределение валидации ExtJS 'datefield' - PullRequest
3 голосов
/ 17 апреля 2011

Мне нужен был столбец даты с некоторым пользовательским поведением, в частности, мне нужно было иметь возможность вводить дату или возраст в одном и том же поле (с возрастом, отображаемым как возраст, и датой, отображаемой как дата)

Например.Ввод «23» оставит «23» в поле в качестве допустимого значения, или ввод «22/1/88» оставит «22/1/88» в качестве допустимого значения.

Так что япопытался создать столбец даты с таким редактором, определенным следующим образом (обратите внимание на переопределение проверки):

editor: {
    xtype: 'datefield',                                 
    format: 'd/m/Y',                                
    validate: function(){
      if(!this.value.match(SOME_REGEX){         
        if(!this.value.match(SOME_REGEX){
          return false;
        }           
      }             
      return true;
    }                               
}

Отладчик Chrome показывает, что событие проверки и функция проверки правильности для дат правильно, однако, когда я пытаюсь установить возраст (int), после нажатия клавиши enter поле получает значение и пытается сделать из него дату, вызывая эту предполагаемую дату обратно в поле и вызывая THEN validate.

Единственное документированноеСобытие до проверки, которое я могу найти:

stripCharsRe

, по умолчанию равно NULL.

Может кто-нибудь пролить свет на это?

1 Ответ

2 голосов
/ 17 апреля 2011

В этом случае я бы предложил вам использовать / настроить TextField в качестве компонента редактора и написать собственный валидатор (как в вашем фрагменте) для проверки значений.

(я знаю, что это не отвечает на ваш вопрос напрямую, но ваш текущий подход будет изобилует проблемами из-за того, что DateField построен для обработки объектов Date)

РЕДАКТИРОВАТЬ -

Если Date Picker является обязательным, используйте TriggerField в качестве базового компонента, а в onTriggerclick отобразите DatePicker . (Вам нужно установить функцию-обработчик, которая будет вызываться, когда пользователь выбирает дату с помощью этого средства выбора. См. Параметр конфигурации DatePicker.handler)

...