如何在fullcalendar中使过去的日期无法选择?

问题是,如何在fullcalendar的月/周视图中禁用PAST DATES上的可选项。

我想用户不允许点击/选择过去的日期。

在此处输入图像描述

这是我试图在事件呈现上实现的一些谷歌搜索代码片段:

selectable: true, selectHelper: false, select: function(start, end, allDay) { var appdate = jQuery.datepicker.formatDate('', 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,这有助于我隐藏过去的日期文本,但是可选择仍在使用过时日期框。

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

我真的很困惑这个问题。 请有人帮助我。 谢谢…

我已经在我的完整日历中完成了这项工作,并且它运行良好。

您可以在select函数中添加此代码。

  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 } }, 

我希望它会对你有所帮助。

我喜欢这种方法:

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

它基本上会在“现在”之前禁用选择。

取消选择方法

感谢这个答案 ,我找到了以下解决方案:

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

你可以结合:

– 如上所述,通过CSS隐藏文本

– 在当月禁用PREV按钮

-dayck dateClick / eventDrop等:

 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 } } 

在FullCalendar v3.0中,有一个属性selectAllow :

 selectAllow: function(info) { if (info.start.isBefore(moment())) return false; return true; } 

下面是我现在使用的解决方案:

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

不需要长程序,只需试试这个。

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

给我们当前的日期。

在fullcalendar 3.9中,您可能更喜欢validRange function parameter

 validRange: function(nowDate){ return {start: nowDate} //to prevent anterior dates }, 

缺点:这也会在该日期时间之前隐藏事件

你可以用它

 var start_date= $.fullCalendar.formatDate(start,'YYYY-MM-DD'); var today_date = moment().format('YYYY-MM-DD'); if(check < today) { alert("Back date event not allowed "); $('#calendar').fullCalendar('unselect'); return false } 

这就是我目前正在使用的

还添加了.add()函数,以便用户无法在同一时间添加事件

 select: function(start, end, jsEvent, view) { if(end.isBefore(moment().add(1,'hour').format())) { $('#calendar').fullCalendar('unselect'); return false; } 

我一直在使用validRange选项。

validRange: { start: Date.now(), end: Date.now() + (7776000) // sets end dynamically to 90 days after now (86400*90) }