Validation 如何在不使用时间的情况下使用min/maxValue验证Ext.form.DateField?

Validation 如何在不使用时间的情况下使用min/maxValue验证Ext.form.DateField?,validation,javascript-framework,extjs,datefield,Validation,Javascript Framework,Extjs,Datefield,我遇到了以下问题:我想验证一个日期字段,使其具有介于minValue/maxValue范围之间的值。(大于或等于,小于或等于) 问题是,我认为该框架需要以毫秒为单位的时间 我已尝试使用自定义vtype,例如: Ext.apply(Ext.form.VTypes,{ dates: function(val, field){ try{ if(this.disabled){ return true; } if(Ext.v

我遇到了以下问题:我想验证一个日期字段,使其具有介于minValue/maxValue范围之间的值。(大于或等于,小于或等于)

问题是,我认为该框架需要以毫秒为单位的时间

我已尝试使用自定义vtype,例如:

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
Ext.apply(Ext.form.VTypes{
日期:函数(val,字段){
试一试{
如果(此项已禁用){
返回true;
}
if(Ext.value(val,null,false)==null){
this.datesText=“此字段为必填项。”;
返回this.allowBlank;//如果允许为空,则不会显示文本消息。
}
if(Ext.value(field.minValue,null,false)!=null){
if(Ext.util.Format.date(val,“Ymd”)Ext.util.Format.date(field.maxValue,“Ymd”)){
this.datesText=“该值无效。
”; this.datesText=“必须小于或等于”+field.maxValue; 返回false; } } 返回true; }捕获(e){ 返回false; } }, datesText:'该值无效。',//错误消息 datesMask:///regexp以筛选允许的字符
}))

基本上,它所做的是将值转换为“Ymd”格式,然后将值作为数字进行比较

如果我调试这段代码,验证会正常进行,但由于某种原因,我仍然会收到一条错误消息。我相信,在我的验证之后,框架正在尝试再次验证该字段

谢谢大家!

塞巴斯蒂安

minValue : Date/String
允许的最小日期。可以是Javascript日期对象,也可以是有效格式的字符串日期(默认为null)

允许的最大日期。可以是Javascript日期对象,也可以是有效格式的字符串日期(默认为null)

如果你需要禁用某些日期

disabledDates : Array
要禁用的“日期”数组,如字符串。这些字符串将用于构建动态正则表达式,因此它们非常强大。一些例子: //禁用这些精确日期:

disabledDates: ["03/08/2003", "09/16/2003"]
//每年禁用这些天:

disabledDates: ["03/08", "09/16"]
//仅匹配开头(如果使用短年份,则很有用):

//2006年3月每天禁用:

disabledDates: ["03/../2006"]
//在每个三月的每一天禁用:

disabledDates: ["^03"]

使用以下方法代替上述固定日期:

//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) 

嘿,安东尼奥,对不起,我不想使用disabledDates属性。我只希望框架使用格式为Ymd的日期验证我的字段,而框架执行此操作:/*如果(this.minValue&&timedisabledDates: ["^03"]
//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)