ExtJS form.field.date пересчитывает дату, если введены недействительные MM или DD.Как предотвратить? - PullRequest
0 голосов
/ 08 декабря 2011

По умолчанию ExtJS form.field.date позволяет вручную вводить / редактировать дату в дополнение к использованию средства выбора даты. Однако, если вы введете число больше 31 для DD или больше 12 для MM, оно пересчитает значение.

Например, если в списке MM / DD / YYYY указано 12/01/2011, и вы измените его на 15/01/2011 (где максимальное значение MM должно быть 12), он пересчитывается для отображения 03/01 / 2012 - при условии, что вы хотели добавить 3 сверх максимального значения.

Есть ли способ отключить эту функцию? Мне бы хотелось, чтобы появилось сообщение о проверке / ошибке, поэтому пользователь должен вручную изменить его, а не автоматически пересчитывать. Это похоже на базовую функциональность, которая нужна другим - я что-то упускаю в настройках конфигурации?

Кросс-посты на форумах Ext .

Ответы [ 2 ]

3 голосов
/ 09 декабря 2011

Нет опции конфигурации, которая позволяет вам это делать ... но вы можете предоставить функцию валидатора.Эта функция вызывается до проверки по умолчанию, которая, как я полагаю, должна изменять значения.

new Ext.form.DateField({

   validator : function(value){
      var split = value.split('/'); //Assuming / is your seperator
      if(split[0] > 31)
      {
        //Show error 
      }
      // Other validations etc.
   }
});

Если изменение значения происходит до вызова валидатора, добавьте параметр конфигурации: validateOnBlur : true

1 голос
/ 10 декабря 2011

Добавление ответа на мой собственный вопрос, найденный через сообщение на форуме ext .

То, что Ext называет датой, функция «ролловер» может быть отключена добавлением useStrict: true. См. документацию .

Я хотел удалить функцию ролловера для всего сайта, поэтому я добавил это в наш основной Ext util.js, который используется по всему сайту:

Date.useStrict = true;

Как я упоминал на форуме ext, я не могу представить себе, почему такое поведение ролловера было бы полезно для интерфейсного пользователя - почему кто-то хотел бы преднамеренно ввести, скажем, 33.01.2011 и намереваться иметь результат 02.02.2011.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...