您的位置:首页 > Web前端 > JavaScript

Extjs DateField Bug 当format为年月'Y-m',在当前月(30、31号)选择其他偶数月会乱跳的问题解决方案

2015-08-03 10:20 691 查看
Ext.form.WMDateField=Ext.extend(Ext.form.DateField,{
safeParse:function(value,format){
if(/[gGhH]/.test(format.replace(/(\\.)/g,''))){
returnDate.parseDate(value,format);
}elseif("Y-m"==format){
varparsedDate=Date.parseDate(value+'-01'+this.initTime,format+'-d'+this.initTimeFormat);
if(parsedDate){
returnparsedDate.clearTime();
}
}elseif("Ym"==format){
varparsedDate=Date.parseDate(value+'01'+this.initTime,format+'d'+this.initTimeFormat);
if(parsedDate){
returnparsedDate.clearTime();
}
}else{
varparsedDate=Date.parseDate(value+''+this.initTime,format+''+this.initTimeFormat);
if(parsedDate){
returnparsedDate.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){

varresult=null;
varyear=date.getFullYear();
varmonth=date.getMonth()+1;
varday=00;

varNdate=newDate(year,month,day);

if(Ndate)
{
this.setValue(Ndate.clearTime());
}
else
{
this.setValue(date);
}

this.fireEvent('select',this,this.value);
}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: