在确定minDate时排除beforeShowDay

Exclude beforeShowDay when determining minDate

本文关键字:排除 beforeShowDay minDate      更新时间:2023-09-26

我使用beforeShowDay来排除节假日和周末,但我希望在计算minDate时排除beforeShowDays。

例如,如果一周中的当前日期是星期五,而minDate是2,则我希望将周末从等式中排除。所以,我希望星期一是星期三,而不是星期一是你可以选择的第一个日期。

这是我的jQuery:

$( "#date" ).datepicker({
minDate: 2, maxDate: "+12M", // Date range
beforeShowDay: nonWorkingDates
});

有人知道怎么做吗?

这样的东西怎么样:

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。

如果你有其他被排除在外的日子,情况会变得更复杂,但我认为逻辑仍然存在。

这是fiddle上的代码:http://jsfiddle.net/TpSLC/