如何在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) }
- 在fullcalendar中添加有关事件的更多信息
- 每年将生日事件添加到jQuery完整日历中
- Fullcalendar 2无法渲染,Bootstrap 3和Rails 4不兼容? (包括Jsfiddle)
- Jquery FullCalendar 2周查看下一个上一个按钮
- FullCalendar $(’td.fc-day’)。mouseover有时会在小月历上出错
- Jquery FullCalendar-根据ruby app中的even_type更改事件颜色
- 在bootstrap模式窗口中提交表单时创建fullCalendar日历事件
- 使用Twitter Bootstrap的Fullcalendar?
- fullcalendar:如何为每天添加所有事件的总持续时间