Ext.form.WMDateField = Ext.extend(Ext.form.DateField, { safeParse : function(value, format) { if (/[gGhH]/.test(format.replace(/(\.)/g, ''))) { return Date.parseDate(value, format); } else if ("Y-m" == format) { var parsedDate = Date.parseDate(value + '-01 ' + this.initTime, format + '-d ' + this.initTimeFormat); if (parsedDate) { return parsedDate.clearTime(); } } else if ("Ym" == format) { var parsedDate = Date.parseDate(value + '01 ' + this.initTime, format + 'd ' + this.initTimeFormat); if (parsedDate) { return parsedDate.clearTime(); } } else { var parsedDate = Date.parseDate(value + ' ' + this.initTime, format + ' ' + this.initTimeFormat); if (parsedDate) { return parsedDate.clearTime(); } } } }); Ext.reg('wmdatefield', Ext.form.WMDateField);
日期控件定义为下面的方法:
[{ fieldLabel:'日期', xtype:'wmdatefield', format:'Y-m' }]
引用----http://blog.sina.com.cn/s/blog_454fbf7401011401.html
然并卵,最终解决方案是:
改成
format:'Y-m-d' ,然后在选择日期控件中加入下面判断,也就是下个月的00天,也就是所选择的这个月的最后一天。
// 当format参数值为Y时,设置值,并激发select事件
if (this.format.indexOf('d') != -1 && this.getValue() != date) {
var result = null;
var year = date.getFullYear();
var month = date.getMonth()+1;
var day = 00;
var Ndate = new Date(year, month, day);
if (Ndate)
{
this.setValue(Ndate.clearTime());
}
else
{
this.setValue(date);
}
this.fireEvent('select', this, this.value);
}