使用.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插件,因为它是缩小?
看来我现在可以回答我自己的问题了。
问题是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");
}