Ext4 日期控件[Y-m]选择2月变3月解决方案

来源:互联网 发布:软件开发技术风险 编辑:程序博客网 时间:2024/05/01 06:41

在Ext中,当日期控件是年月格式的时候会发生一种问题,就是选择2月的时候会变成3月.

在电脑时间当前日期在1到28号是正常的.29号到31号就会出现这类问题了.

原因是当你选择日期的时候,格式是Y-m为[2012-02],但是至少内置的时间必须要加上日期号.变成[2012-02-?]这个问号Ext是默认补足.

取的是当前时间的日期号补足它.变成[2012-02-31],这样2月是没有31号的.超过了就月份加一,最后显示为[2012-03].

这个bug不容易发现.目前做以下日期控件重新赋值的方法.只针对[Y-m]做说明.让大家在自己的业务中扩展.

但是我的代码中默认的是选择01号.如果在时间的日期区间的那种,就会出现只能选择01号的情况,不过没关系.只要年月嘛.

Ext.create('Ext.form.Panel', {    renderTo: Ext.getBody(),    width: 300,    bodyPadding: 10,    title: 'Dates',    items: [{        xtype: 'datefield',        anchor: '100%',        fieldLabel: 'From',        format : 'Y-m',        name: 'from_date',        maxValue: new Date()  // limited to the current date or prior    }, {        xtype: 'datefield',        anchor: '100%',        fieldLabel: 'To',        name: 'to_date',        format : 'Y-m',        value: new Date()  // defaults to today    }]});Ext.override(Ext.form.field.Date, {safeParse : function(value, format) {        var me = this,            utilDate = Ext.Date,            result = null,            strict = me.useStrict,            parsedDate;        if (utilDate.formatContainsHourInfo(format)) {            result = utilDate.parse(value, format, strict);        } else {            if (format == 'Y-m') {            value = value + '-01';            format = 'Y-m-d';            }                        parsedDate = utilDate.parse(value + ' ' + me.initTime, format + ' ' + me.initTimeFormat, strict);            if (parsedDate) {                result = utilDate.clearTime(parsedDate);            }        }        return result;    }});




原创粉丝点击