2014-12-06 147 views
2

我爲我的日曆使用jQuery UI datepicker。我已經使用beforeShowDay函數來阻止不可用的日子。這些數據來自AJAX調用,如果成功,我將填充日曆。jQuery UI Datepicker - 刷新可用日期

這很好,然而我然後想每次日期變得不可用時更新日期選擇器,但我無法讓datepicker刷新。我希望能夠調用一個函數,例如getdates(0);和日期選擇器得到更新。

見功能如下代碼:

function getdates(duration) { 
    $.getJSON(pluginUrl+"ajax/getdates.php?duration="+duration, function(data) { 

     if(data['success'] == 1){ 

      console.log("here"); 
      var nonWorking = data['non_working_days']; 
      var nonWorkingDates = data['non_working_dates']; 
      var fullyBookedDates = data['fully_booked_dates']; 

      jQuery("#datepicker").datepicker({ 
       minDate: 0, 
       maxDate: "+2m", 
       beforeShowDay: function(date){ 
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date); 
        var day = date.getDay(); 

        var status = true; 

        if(nonWorking.indexOf(day) >= 0){ 
         var status = false; 
        } 
        if(nonWorkingDates.indexOf(string) >= 0){ 
         var status = false; 
        } 
        if(fullyBookedDates.indexOf(string) >= 0){ 
         var status = false; 
        } 

        console.log('in here'); 

        return [ status ]; 
       }  
      }); 

     } 

    }); 
} 

UI的例子:

Datepicker UI

感謝所有幫助

+0

做到這一點的jsfiddle幫助? http://jsfiddle.net/28NWZ/10/ – Dave 2014-12-06 20:16:37

+0

var dateField = $('#datepicker'); dateField.datepicker( '刷新');應該在datepicker中刷新日期。 – Dave 2014-12-06 20:18:25

+0

@不停地顯示日曆,而不僅僅是當輸入焦點時。將UI的屏幕截圖添加到原始帖子。 – 2014-12-06 20:24:46

回答

3

如果您在處理新數據之前重置日期選擇器?

jQuery("#datepicker").datepicker("option" , { 
    minDate: null, 
    maxDate: null} 
); 

或者只是破壞它完全和重新開始:

jQuery("#datepicker").datepicker("destroy"); 
+0

(「#日期選擇器「)日期選擇器(」破壞「); 謝謝,這幫了我! +1 – lbartolic 2015-07-04 10:19:58