2011-05-26 57 views
3

我使用beforeShowDay排除假期和周末,但是我希望在计算minDate时排除beforeShowDays。确定分钟日期前排除beforeShowDay

E.g.如果一周中的当前日期是星期五,并且minDate是2,我希望将周末排除在等式之外。因此,我不希望星期一成为您可以选择的第一个日期,而是希望星期三。

这是我的jQuery:

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

有谁知道如何做到这一点?

回答

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/