1

datetimepicker插件下载地址

代码如下:

//日期输入框
$("input").datetimepicker({
    format: 'yyyy-mm',    //日期格式为“年-月”
    startView:3,          //开始的页面为月份选择页面
    minView: 3,           //最小页面为月份选择页面
    autoclose: true,
    language:'zh-CN'
});
$("input.dateStart").on("click",function(){
    //将后一个输入框的日期值设为结束日期
    $(this).datetimepicker("setEndDate",$(this).next().val());
});
$("input.dateEnd").on("click",function(){
    //将前一个输入框的日期值设为开始日期
    $(this).datetimepicker("setStartDate",$(this).prev().val());
});

在使用中发现,在设置开始日期输入框中的日期后,点击结束日期输入框时,显示的可选开始月份总是比开日期输入框中的月份晚两个月,比如,开始日期输入框中的日期为2016-01,那么结束日期输入框中显示的可选开始月份就是三月。但是反过来,开始日期输入框中的可选结束月份却没有问题。初步判断是在设置开始月份的语句上有问题。
bug图1

bug图2

看了一下源码,找到了原因,是630行的代码应该是减1,而不是加1

代码截图

startYear = this.startDate !== -Infinity ? this.startDate.getUTCFullYear() : -Infinity,
//****************bug代码行**********************//
//startMonth = this.startDate !== -Infinity ? this.startDate.getUTCMonth() + 1 : -Infinity,
//******************修改为**********************//
startMonth = this.startDate !== -Infinity ? this.startDate.getUTCMonth() - 1 : -Infinity,
endYear = this.endDate !== Infinity ? this.endDate.getUTCFullYear() : Infinity,
endMonth = this.endDate !== Infinity ? this.endDate.getUTCMonth() + 1 : Infinity,

修改后显示正常:
修改bug后


XinY92
24 声望0 粉丝