2011-05-26 52 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/

相關問題