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插件,因为它被缩小了?
答案 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");
}