2010-02-25 151 views
1

我想要做的事情是在一週中的某些日子裏爲某個會場關閉時灰色。每個場地可能會在不同的日子關閉。在jQuery UI Datepicker中使用beforeShowDay來關閉本週的幾天

我可以使用下面的代碼作爲一個測試,以關閉所有星期日:

$('#bookingDatepicker').datepicker({ 
       minDate: 0, 
       maxDate: '+3M', 
       dateFormat: 'DD, d MM, yy', 
       altField: '#actualDate', 
       altFormat: 'yy-mm-dd', 
       beforeShowDay: closedDays 
      }); 

function closedDays(date) { 
    if (date.getDay() == 0){ 
    return [false,"","Venue Closed"]; 
    } else { return [true, ""]; 
} 
} 

不過,我可能不得不關門大吉了超過一天,他們可能不會彼此相鄰運行。在從數據庫中我的代碼可以創建一個字符串,下面的例子,這表明什麼天都開放...

1,2,3,4,5,6,0 //I would want to show no days closed 
2,3,4,5,6  //I would want to show Sunday (0) and Monday (1) closed 

我不知道如何處理這雖然做的就是上面的代碼工作。我使用PHP來創建字符串,因此可以使用它來處理它,如果需要的話。

編輯

當你發佈你得到一個小小的突破的一個問題就是往常一樣!我已經開發了下面的代碼,它工作,如果我在其中使用虛擬數據,但是我需要找到一種方法來包裝我的字符串值「」。這是現在導致我麻煩,如果我只是用VAR cloDays = [2,3,4,5],它就不再

var cloDays = ["2","3","4","5"]; 
function closedDays(date){ 
var sDate = date.getDay().toString(); 
if ($.inArray(sDate, cloDays) == -1) return [false,"","Venue Closed"]; 
else return [true, ""]; 
} 

回答

0

管理運行通過下面的代碼我的帶子將其固定的工作,基本上它爆炸到一個PHP數組中,然後使用JSON_Encode對其進行編碼。似乎很好地工作:

$cloDays = json_encode(explode(",", $cloDays)); 
3

這篇文章沒有解決我的問題,但指出我在正確的方向。

這是什麼工作,我想要的方式:

var unavailableDates = ["9-5-2011","10-5-2011"]; 

function unavailable(date) { 
    dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear(); 
    if ($.inArray(dmy, unavailableDates) == -1) { 
     return [true, ""]; 
    } else { 
     return [false,"","Unavailable"]; 
    } 
} 

$('#iDate').datepicker({ minDate: +1, beforeShowDay: unavailable }); 

這將阻止所有日期在過去,包括今天再塊unavailableDates數組中指定的日期。