Extjs datefields从或开始结束日期验证 [英] Extjs datefields from to or start end date validations
本文介绍了Extjs datefields从或开始结束日期验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是一个extjs mixin,用于验证从日期到开始日期或开始结束日期。
这里是mixin ..(核心代码来自sencha论坛:))
This is a extjs mixin to validate fromdate todate or start end dates in a form. here's the mixin.. (core code was taken from sencha forum :))
Ext.define("AMShiva.mixin.DateRangeValidator", {
timerange: function (val, field) {
/// <summary>
/// This will validate two datefields
/// </summary>
var me = this; //will be the form, containing datefields
var time = field.parseDate(val);
if (!time) {
return;
}
if (field.startTimeField && (!this.timeRangeMax || (time.getTime() != this.timeRangeMax.getTime()))) {
var start = me.down('datefield[name=' + field.startTimeField + ']');
start.maxValue = time;
start.validate();
this.timeRangeMax = time;
}
else if (field.endTimeField && (!this.timeRangeMin || (time.getTime() != this.timeRangeMin.getTime()))) {
var end = me.down('datefield[name=' + field.endTimeField + ']');
end.minValue = time;
end.validate();
this.timeRangeMin = time;
}
return true;
}
});
以上mixin的使用示例
Sample usage of above mixin
是一个表单的部分部分。
This is a partial section from a form.
{
xtype: 'datefield',
fieldLabel: 'From',
name: 'from_date',
format: 'Y-m-d',
editable: false,
endTimePeriod:'to_date', //below component
validationEvent: 'change',
validator: function (value) {
return me.timerange(value, this);
}
},
{
xtype: 'datefield',
fieldLabel: 'To',
format: 'Y-m-d',
name: 'to_date',
editable: false,
startTimeField:'from_date', //above component
validationEvent: 'change',
validator: function (value) {
return me.timerange(value, this);
}
}
推荐答案
自定义Vtype daterange用于日期范围验证:
Custom Vtype daterange for date range validation:
Ext.apply(Ext.form.VTypes, {
daterange : function (val, field) {
var date = field.parseDate(val);
if (!date) {
return false;
}
if (field.startDate && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) {
var start = Ext.getCmp(field.startDate); //field.up('form').down('#'+field.startDate);
start.setMaxValue(date);
start.validate();
this.dateRangeMax = date;
} else if (field.endDate && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) {
var end = Ext.getCmp(field.endDate); //field.up('form').down('#' + field.endDate);
end.setMinValue(date);
end.validate();
this.dateRangeMin = date;
}
return true;
},
daterangeText : Ext.BUNDLE.getMsg('Label.daterangetext')
});
从日期和到日期组件
{
xtype : 'panel',
items : [{
xtype : 'displayfield',
value : 'From Date'
}, {
id : 'msgFromDate',
xtype : 'datefieldplus',
vtype : 'daterange',
endDate : 'msgToDate'
}
]
}, {
xtype : 'panel',
items : [{
xtype : 'displayfield',
value : 'To Date'
}, {
id : 'msgToDate',
xtype : 'datefieldplus',
vtype : 'daterange',
startDate : 'msgFromDate'
}
]
}
这篇关于Extjs datefields从或开始结束日期验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文