2016-04-19 141 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) 
])