我正在使用beforeShowDay排除假期和周末,但我希望在计算minDate时排除beforeShowDays。
E.g。如果当周的当天是星期五而且minDate是2,那么我希望将周末排除在等式之外。因此,不是星期一是你可以选择的第一个日期,我希望它是星期三。
这是我的jQuery:
$( "#date" ).datepicker({
minDate: 2, maxDate: "+12M", // Date range
beforeShowDay: nonWorkingDates
});
有谁知道怎么做?
答案 0 :(得分:2)
这样的事情怎么样:
function includeDate(date) {
return date.getDay() !== 6 && date.getDay() !== 0;
}
function getTomorrow(date) {
return new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);
}
$("#date").datepicker({
beforeShowDay: function(date) {
return [includeDate(date)];
},
minDate: (function(min) {
var today = new Date();
var nextAvailable = getTomorrow(today);
var count = 0;
var newMin = 0; // Modified 'min' value
while(count < min) {
if (includeDate(nextAvailable)) {
count++;
}
newMin++; // Increase the new minimum
nextAvailable = getTomorrow(nextAvailable);
}
return newMin;
})(2) // Supply with the default minimum value.
});
基本上,找出下一个有效日期的位置,利用您已为beforeShowDay
定义的方法。如果我的逻辑是正确的(并且你只排除了周末),这个值只能是2或4:2如果周末(周四或周五)有周末,如果没有,则为2。
如果你有其他日子被排除,它会变得更复杂,但我认为逻辑仍然存在。
这是关于小提琴的代码:http://jsfiddle.net/TpSLC/