Поле даты ExtJs преобразует недействительную дату в действительную дату

Я использую ExtJS 2.1, и у меня есть следующая проблема, я ненавижу "поле даты". Теперь необходимо ввести дату в формате "ММ / ДД / ГГГГ". Проблема в том, что если пользователь вводит что-то вроде "21/17" или "16/05", он конвертируется в действительную дату. (21/17 конвертируется в 17.09.2015 и 16/05 конвертируется в 05.05.2015). Как мне переопределить это поведение? Я пытался написать свой собственный валидатор, но это тоже не помогло, даже если мой валидатор возвращает "ложь", преобразование все равно происходит. Вот код ниже:

var d = new Ext.form.DateField({
            el: el.dom,
            id: id,
            format: 'm/d/Y',
            hideTrigger: false,
            allowBlank: true,
            disabled: isDisabled,
            validator: testForShortDate,
            validateOnBlur: true,
            minLength:6,
            //validationEvent: false,  //string or boolean
            invalidText: 'Enter date as MM/DD/YYYY',
            menuListeners: Ext.applyIf({
                select: function (m, d) {
                    Ext.form.DateField.prototype.menuListeners.select.apply(this, arguments);
                    this.focus.defer(100, this);
                    onDateSelect(m, d, this);
                }
            })
        });

        d.render();

d

function testForShortDate(date) {
if (date.split("/").length != 3) {
    console.log(date.split("/").length);
    return false;
}
return true;

Кто-нибудь может помочь?

1 ответ

Решение

Существуют альтернативные форматы даты, которые ExtJS попытается использовать, если значение поля даты не может быть проанализировано с использованием настроенного format, Эти форматы могут быть определены с помощью altFormats имущество.

По умолчанию это значение:

m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d

что объясняет, почему что-то вроде 21/17 превращается в 9/17/2015 как формат m/d используется здесь ("21-й" месяц 2014 года - действительно 9-й из 2015 года).

Если вы хотите полностью отключить это, просто установите для свойства пустую строку:

altFormats: ''
Другие вопросы по тегам