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

问题描述 投票:0回答:1

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

Datepicker选项

numberOfMonths: 3,
onSelect: function( selectedDate) { 
            var drawMonth = $('#search_dates').data().datepicker.drawMonth; 
            workers.fn.setRange( selectedDate, this ); 
            var dmindate = $( '#search_dates' ).datepicker( 'option', 'minDate');
            var dmaxdate = $( '#search_dates' ).datepicker( 'option', 'maxDate');
            if(dmindate != selectedDate) {
                console.log( 'before:' + dmindate + ' - ' + dmaxdate);
                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');
                console.log( 'after: ' + dmindate + ' - ' + dmaxdate);              
            }
             $( '#search_dates' ).data().datepicker.drawMonth = drawMonth; // <-- this is new
             $( '#search_dates' ).datepicker("refresh");
          }

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

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

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

javascript jquery jquery-ui datepicker calendar
1个回答
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");
}
© www.soinside.com 2019 - 2024. All rights reserved.