2017-03-18 56 views
-1

我試圖禁用FullCalendar中的特定日期。我的數據庫中有一些日期會阻止或取消阻止日期。jQuery inArray()使用FullCalendar中的select選項禁用天

當我使用下面的​​時,它會阻止日曆中的所有日子。不是jQuery大師,所以我需要一些幫助。

這是我到目前爲止;

select: function(start, end, jsEvent, view) { 
    var disabledDates = ['2017-03-17', '2017-03-23']; 

    if($.inArray(disabledDates) !== -1) { 
     swal({ 
      title: "Date is blocked", 
      text: "Sorry, the maximum Daily Bookings have been reached. Please select another date.", 
      type: "warning" 
     }); 

     $('#calendar').fullCalendar('unselect'); 
     return false; 
    } else { 
     $('#ModalAdd .start').val(moment(start).format('YYYY-MM-DD HH:mm:ss')); 
     $('#ModalAdd .end').val(moment(end).format('YYYY-MM-DD HH:mm:ss')); 
     $('#ModalAdd').modal('show'); 

     $('#calendar').fullCalendar('unselect'); 
     return true; 
    }; 
} 

任何建議將被大大接受。

編輯

我已經編輯我的問題上面,但仍不能得到這個工作,它應該只是在回報truefalse

我使用select: function的原因是我只是希望模型不顯示數組中是否有日期。

爲什麼不能工作?

+0

我不熟悉FullCalendar,但爲什麼你使用'select'回調來禁用一天?你不應該使用[dayRender](https://fullcalendar.io/docs/display/dayRender/)來直觀地禁用它(可能通過一個類)和[selectAllow](https://fullcalendar.io/docs/selection/selectAllow /)來執行規則?我的理解是,如果「選擇」被解僱,它已經太晚了。也許我錯了 – Dogoku

+0

另外,在查看上面的代碼之後,您正在將'disabled'字符串注入'disabledDates'數組中。然後,你正在檢查數組中的相同字符串,這將永遠是真的! – Dogoku

+0

我上面編輯了我的問題,仍然沒有喜悅:-( – John

回答

0

以防萬一任何人需要這個解決方案,我終於得到它的工作。

select: function(start, end, jsEvent, view) { 
    var disabledDates = ['2017-03-17', '2017-03-23']; 
    var selectedDate = moment(start).format('YYYY-MM-DD'); 

    if($.inArray(selectedDate, disabledDates) !== -1) { 
     swal({ 
      title: "Date is blocked", 
      text: "Sorry, the maximum Daily Bookings have been reached. Please select another date.", 
      type: "warning" 
     }); 

     $('#calendar').fullCalendar('unselect'); 
     return false; 
    } else { 
     $('#ModalAdd .start').val(moment(start).format('YYYY-MM-DD HH:mm:ss')); 
     $('#ModalAdd .end').val(moment(end).format('YYYY-MM-DD HH:mm:ss')); 
     $('#ModalAdd').modal('show'); 

     $('#calendar').fullCalendar('unselect'); 
     return true; 
    }; 
}