Поле даты 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: ''