如果显示的第一个月是12月,使用.data()。datepicker.drawMonth日历的Jquery Datepicker会跳一年

时间:2017-12-21 06:51:27

标签: javascript jquery jquery-ui datepicker calendar

Jquery Datepicker使用.data()。datepicker.drawMonth日历如果显示的第一个月是12月并且您在1月或2月选择日期,则会跳一年。

Datepicker选项

v: layout [
    size 500x200
    text "test" field "test" return 
    b: button "ok" 
]
center-face/x b
view v

如果当前日期是2017年12月,则日历显示2017年12月,2018年1月和2018年2月

问题是当用户在2018年1月或2月选择日期时,日历显示会跳转到2018年12月,2019年1月和2019年2月。

有没有人有这个解决方案,不涉及修改datepicker jquery插件,因为它被缩小了?

1 个答案:

答案 0 :(得分:0)

现在我可以回答我自己的问题了。

问题是DrawMonth的值设置为11,所以当selectedDate在1月时,它需要drawMonth值,justs从所选年份获取该月份数,因此使日历显示2018年12月到2019年2月。

解决方案是从drawMonth值取12,如果它超过9且所选月份是1月或2月。

onSelect: function( selectedDate ) { 
        var drawMonth = $('#search_dates').data().datepicker.drawMonth;
        console.log(drawMonth);
        workers.fn.setRange( selectedDate, this ); 
        var dmindate = $( '#search_dates' ).datepicker( 'option', 'minDate');
        var dmaxdate = $( '#search_dates' ).datepicker( 'option', 'maxDate');
        if(dmindate != selectedDate) {
            if(dmindate == '0d') {  $( '#search_dates' ).datepicker( 'option', 'minDate', selectedDate );} else { $( '#search_dates' ).datepicker( 'option', 'maxDate', selectedDate );} 
        dmindate = $( '#search_dates' ).datepicker( 'option', 'minDate');
        dmaxdate = $( '#search_dates' ).datepicker( 'option', 'maxDate');
        }
        var start_index = selectedDate.indexOf('-') + 1;
        var selMonth = parseInt(selectedDate.slice(start_index, start_index + 2));
        if(drawMonth > 9 && selMonth < 3) {
            drawMonth = drawMonth - 12;
        }
         $( '#search_dates' ).data().datepicker.drawMonth = drawMonth; // <-- this is new
         $( '#search_dates' ).datepicker("refresh");
}