确定minDate时排除beforeShowDay

时间:2011-05-26 09:39:54

标签: javascript jquery jquery-ui

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

E.g。如果当周的当天是星期五而且minDate是2,那么我希望将周末排除在等式之外。因此,不是星期一是你可以选择的第一个日期,我希望它是星期三。

这是我的jQuery:

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

有谁知道怎么做?

1 个答案:

答案 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/