【发布时间】:2014-08-05 12:28:02
【问题描述】:
我需要在使用“prev”和“next”按钮时使用 jQuery datepicker 在月份选择中跳过某些月份。
这在触发日期选择器的“下个月”按钮并在到达无法选择的不需要的月份时重新映射月份时效果很好,但是“上个月”按钮给了我不寻常的行为,我不知道为什么...
假设我有这样的有效月份/年份范围:
(年,月 - 没有比现在更早的日期)
(2014) 11,12
(2015)01,02,03,04,05,11,12
这是我对日期选择器的设置(请记住,在内部,日期选择器从月份开始计数为 0)
var dateToday = new Date();
m = dateToday.getMonth();
y = dateToday.getFullYear();
jQuery( ".datepickerdiv" ).datepicker({
minDate: dateToday,
maxDate: \'+' . $maxDate . 'm\',
changeYear: true,
changeMonth: false,
beforeShowDay: available,
yearRange: "' . date("Y") . ':' . date('Y', strtotime('+1 year')) . '",
onChangeMonthYear: function(year, month, inst) {
jQuery(\'.ui-datepicker-next\').live("click", function() {
if(month == 6){
year = jQuery(\'select[class=ui-datepicker-year]\').val();
jQuery(\'#anreisedatum\').datepicker( "setDate" , new Date(year, 10, 1));
jQuery(\'#anreisedatum\').datepicker("refresh");
}
});
jQuery(\'.ui-datepicker-prev\').live("click", function() {
var selyear = jQuery(\'.ui-datepicker-year\').val();
year = jQuery(\'select[class=ui-datepicker-year]\').val();
if(month == 10 && y < selyear) {
jQuery(\'#anreisedatum\').datepicker( "setDate" , new Date(selyear, 4, 1));
jQuery(\'#anreisedatum\').datepicker("refresh");
}
});
},dateFormat: "dd.mm.yy",showWeek: true,weekHeader: 'KW'...
目前看来,“下一个”按钮工作正常,但“上一个”按钮发生了一些奇怪的事情。例如,当在“2015 年 11 月”并单击“上一个”按钮时,月份完美地设置为“2015 年 5 月”(根据上面的日期范围,从“2015 年 11 月”跳转到“2015 年 5 月”是正确的),但随后按钮卡在那里。 您不能再早于“2015 年 5 月”进行导航。
是标准的行为 jQuery(\'#anreisedatum\').datepicker( "setDate" , new Date(year, 4, 1)); 这是从那时起最早的时间点吗?
在这种情况下,我必须重新考虑以这种方式控制 callendar 导航,因为似乎无法以这种方式跳过几个月的显示......我说的对吗?
谢谢
【问题讨论】:
标签: jquery datepicker jquery-ui-datepicker