2016-04-19 135 views
1

我試圖禁用存儲在數據庫中的日期。Datepicker禁用日期

<script type="text/javascript"> 

    var dates = JSON.stringify('<?php echo json_encode($darray); ?>'); 
    function BookedDates(date) { 
     for (var i = 0; i < dates.length; i++) { 
      if (new Date(dates[i]).toString() == date.toString()) { 
       return [false]; 
      } 
     } 
     return [true]; 
    } 
    // alert(dates) 
    console.log(dates); 
</script> 

<p>Date: <input type="date" class="datepicker2" name="date"></p> 

就像有一個控制檯上面的打印日期的腳本:

"[{\"date\":\"2016-04-02\"},{\"date\":\"2016-04-08\"},{\"date\":\"2016-04-15\"},{\"date\":\"2016-04-29\"},{\"date\":\"2016-05-07\"}]" 

然而,問題是當我嘗試禁用在日期選擇器的日期:

$(function(){ 
    $('.datepicker2').pickadate({ 
     dateFormat: 'yy/mm/dd', 
     beforeShowDay:[ 
      BookedDates 
     ] 
    }); 
}); 

我沒有任何錯誤或控制檯上的任何東西,陣列中的這些日期只是沒有被禁用,非常感謝任何幫助。

+0

我不確定這一點,但我已經檢查了幾個類似的答案。我有兩個建議。刪除[]並簡單地寫'beforeShowDay:BookedDates'。另外,你是否試圖匹配數組中的日期格式和日期選擇器?現在一個人已經/另一個人 - 作爲分隔符。 – KjetilNordin

+0

是的,這是一個功能,我試過匹配的日期格式。 –

+0

您是否已經在BookedDates中嘗試過任何日誌記錄,以確保它被調用?你有沒有嘗試記錄實際的等值檢查? – KjetilNordin

回答

1

似乎你正在使用pickadate.js,而試圖實現屬於JQuery UI datepicker的功能。這是兩個不同的圖書館。你需要去pickadate.js API,並發現有一個解決方案:

http://amsul.ca/pickadate.js/api/

下面是相關部分的簡短摘要:

您可以禁用套日期,然後使用以下方法整個集合或那些組內 特定日期的:

特定日期:

picker.set('disable', [ 

    // Using a collection of arrays formatted as [YEAR,MONTH,DATE] 
    [2016,9,3], [2016,9,9], [2016,9,20], 

    // Using JavaScript Date objects 
    new Date(2015,9,13), new Date(2015,9,24) 
]) 
picker.set('enable', [ 
    [2016,9,9], 
    [2016,9,13], 
    new Date(2015,9,20) 
])