Как я могу проверить Ext.form.DateField, используя min / maxValue, не используя время? - PullRequest
0 голосов
/ 12 ноября 2010

У меня следующая проблема: я хочу проверить DateField, чтобы он имел значение в диапазоне minValue / maxValue. (больше или равно, ниже или равно)

Проблема в том, что мне кажется, что фреймворк требует времени в миллисекундах.

Я пытался использовать пользовательский тип, такой как:

Ext.apply(Ext.form.VTypes,{
dates: function(val, field){
    try{
        if(this.disabled){
            return true;
        }

        if(Ext.value(val,null,false)==null){
            this.datesText = "This field is required.";
            return this.allowBlank; //the text message won't be shown in case blank is allowed.
        }

        if(Ext.value(field.minValue,null,false)!=null){
            if(Ext.util.Format.date(val,"Ymd")<Ext.util.Format.date(field.minValue,"Ymd")){
                this.datesText = "The value is invalid.<br/>";
                this.datesText = "it must be greater or equal than " + field.minValue;
                return false;
            }
        }

        if(Ext.value(field.maxValue,null,false)!=null){
            if(Ext.util.Format.date(val,"Ymd")>Ext.util.Format.date(field.maxValue,"Ymd")){
                this.datesText = "The value is invalid.<br/>";
                this.datesText = "It must be lower or equal than " + field.maxValue;
                return false;
            }
        }

        return true;

    }catch(e){
        return false;
    }
},
datesText: 'The value is invalid.', //error message
datesMask: / /  //regexp to filter the characters allowed

});

По сути, он конвертирует значения в формат « Гм », а затем сравнивает значения в виде чисел.

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

Спасибо!

1018 * Sebastián *

Ответы [ 2 ]

1 голос
/ 14 ноября 2010
minValue : Date/String

Минимально допустимая дата.Может быть либо объектом даты Javascript, либо строковой датой в допустимом формате (по умолчанию null).

maxValue : Date/String

Максимально допустимая дата.Может быть либо объектом даты Javascript, либо строковой датой в допустимом формате (по умолчанию null).

, и в случае, если вам необходимо отключить некоторые даты

disabledDates : Array

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

disabledDates: ["03/08/2003", "09/16/2003"]

// отключаем эти дни для каждого года:

disabledDates: ["03/08", "09/16"]

// соответствуют только началу (полезно, если вы используете короткиелет):

disabledDates: ["^03/08"]

// отключить каждый день в марте 2006 года:

disabledDates: ["03/../2006"]

// отключить каждый день в марте:

disabledDates: ["^03"]
0 голосов
/ 16 января 2012

Вместо фиксированных дат, упомянутых выше, используйте это:

//doesn't allow past today
maxValue: new Date() 
//Only allows 7 days in the past from current date.
minValue: Ext.Date.add(new Date(), Ext.Date.DAY, -7) 
...