2013-02-20 260 views
17

問題是,如何在fullcalendar的月/周視圖中禁用PAST DATES上的可選項。如何使過去的日期在fullcalendar中無法選擇?

我想讓用戶不允許點擊/選擇過去的日期。

enter image description here

下面是一些用Google搜索的代碼片段,我想事件的渲染來實現:

selectable: true, 
selectHelper: false, 
select: function(start, end, allDay) { 
     var appdate = jQuery.datepicker.formatDate('<?php echo $DPFormat; ?>', new Date(start)); 
     jQuery('#appdate').val(appdate); 
     jQuery('#AppFirstModal').show(); 
    }, 
    eventRender: function(event, element, view) 
    { 
     var view = 'month' ; 
     if(event.start.getMonth() !== view.start.getMonth()) { return false; } 
    }, 

但它不是,雖然工作。

我也嘗試了暴風雨的CSS,這有助於我隱藏過去的日期文本,但可選仍然在pastdate框中工作。

.fc-other-month .fc-day-number { 
    display:none; 
} 

我真的被這個問題困住了。請有人幫助我。 謝謝...

回答

23

我已經在我的fullcalendar中完成了這個工作,並且工作完美。

您可以在您的選擇功能中添加此代碼。

select: function(start, end, allDay) { 
    var check = $.fullCalendar.formatDate(start,'yyyy-MM-dd'); 
    var today = $.fullCalendar.formatDate(new Date(),'yyyy-MM-dd'); 
    if(check < today) 
    { 
     // Previous Day. show message if you want otherwise do nothing. 
     // So it will be unselectable 
    } 
    else 
    { 
     // Its a right date 
     // Do something 
    } 
    }, 

我希望它能幫到你。

下面
+0

嗨伴侶,你讓我的一天。非常感謝... – Frank 2013-02-22 06:35:28

+1

這裏使用了這個。謝謝。 ownzilla.com/wordpress-google/?page_id=8 – Frank 2013-02-22 13:01:24

+0

它的所有權利坦率..你是受歡迎的.. – Mausami 2013-02-24 22:23:10

4

您可以結合:

通過CSS

-hide文本在問題中提到

- 上dayClick/eventDrop等disable PREV button on current month

-check日期:

dayClick: function(date, allDay, jsEvent, view) { 
    var now = new Date(); 
    if (date.setHours(0,0,0,0) < now.setHours(0,0,0,0)){ 
     alert('test'); 
    } 
    else{ 
     //do something 
    } 
} 
+0

非常感謝@Lukasz Koziara – Frank 2013-02-22 06:37:52

1

是我現在使用的解決方案:

 select: function(start, end, jsEvent, view) { 
      if (moment().diff(start, 'days') > 0) { 
       $('#calendar').fullCalendar('unselect'); 
       // or display some sort of alert 
       return false; 
      } 
15

我喜歡這種方法:

select: function(start, end) { 
    if(start.isBefore(moment())) { 
     $('#calendar').fullCalendar('unselect'); 
     return false; 
    } 
} 

它將之前的「現在」的時間基本上是禁止選擇。

Unselect method

+3

這是比選擇的答案更好的方法。只需要添加這個eventDrop,我很好去:) – 2017-02-02 20:21:49

1

感謝this answer,我發現下面的解決方案:

$('#full-calendar').fullCalendar({ 
    selectable: true, 
    selectConstraint: { 
     start: $.fullCalendar.moment().subtract(1, 'days'), 
     end: $.fullCalendar.moment().startOf('month').add(1, 'month') 
    } 
}); 
0

無需長期計劃,只是試試這個。

checkout.setMinSelectableDate(Calendar.getInstance().getTime());  
Calendar.getInstance().getTime() 

給我們當前日期。

相關問題