我遇到以下问题:我想验证一个DateField,使其具有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
});
它的基本功能是将值转换为“ Ymd ”格式,然后将值作为数字进行比较。
如果我调试此代码,验证就可以了,但由于某种原因,我仍然收到错误消息。我相信该框架在验证后会再次验证该字段。
谢谢!
圣塞瓦斯蒂安
答案 0 :(得分:1)
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年3月每天禁用:
disabledDates: ["03/../2006"]
//每年三月禁用每天:
disabledDates: ["^03"]
答案 1 :(得分:0)
取代上面提到的固定日期,请使用:
//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)