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

在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;
		    }
		});




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值