Fullcalendar-限制可选择为一天
默认情况下,如果启用“可选”属性,则允许您单击、拖动并选择几天。我想只允许用户选择一天,而不是拖过多天。是否有一种方法可以启用“可选”功能,但禁用随附的拖动功能?现在不行:如果不修改源,则无法自定义可选天数的范围。在选择回调中,添加以下内容可以实现此目的: (使用moment.js的fullcalendar 2) 资源:Fullcalendar-限制可选择为一天,fullcalendar,Fullcalendar,默认情况下,如果启用“可选”属性,则允许您单击、拖动并选择几天。我想只允许用户选择一天,而不是拖过多天。是否有一种方法可以启用“可选”功能,但禁用随附的拖动功能?现在不行:如果不修改源,则无法自定义可选天数的范围。在选择回调中,添加以下内容可以实现此目的: (使用moment.js的fullcalendar 2) 资源: 您可以通过将fullcalendar的“select”方法传递给dayClick事件侦听器来选择单个日期或时间: $('#myCalendar').fullcalendar(
您可以通过将fullcalendar的“select”方法传递给dayClick事件侦听器来选择单个日期或时间:
$('#myCalendar').fullcalendar({
dayClick: function(date,jsEvent,view) {
$('#myCalendar').fullcalendar('select', date);
}
});
注意:您还需要在下一次回调(或dayClick)时启动“取消选择”方法。如果您想在“日程周”视图中将突出显示限制为一天,可以使用以下方法:
selectConstraint:{
start: '00:01',
end: '23:59',
},
如果要限制事件,可以使用
eventConstraint:{
start: '00:00',
end: '24:00',
},
这将仅在用户选择一天时执行
// ...
select: function(start, end){
if(moment(start._d).add(1, 'days').format('YYYY-MM-DD')==moment(end._d).format('YYYY-MM-DD')){
// just select one day
}
},
// ...
为什么不使用
选择Allow
通过将开始
和结束
时间转换为秒开始。将其与一天中的秒数进行比较
不使用矩的工作解决方案。js:
selectAllow: function (e) {
if (e.end.getTime() / 1000 - e.start.getTime() / 1000 <= 86400) {
return true;
}
}
选择允许:功能(e){
如果(e.end.getTime()/1000-e.start.getTime()/1000只需:
selectAllow:function(selectInfo){
返回selectInfo.end.diff(selectInfo.start,'days')==1;
}
此配置设置在FullCalendar v5上对我有效:
selectAllow: function(selectionInfo) {
let startDate = selectionInfo.start;
let endDate = selectionInfo.end;
endDate.setSeconds(endDate.getSeconds() - 1); // allow full day selection
if (startDate.getDate() === endDate.getDate()) {
return true;
} else {
return false;
}
}
对我来说,像这样使用selectAllow选项是有效的
selectAllow: function(selectionInfo) {
// Don't allow creation of events over more than 1 day
return moment(selectionInfo.start).utcOffset(false).isSame(moment(selectionInfo.end).subtract(1, 'second').utcOffset(false), 'day');
},
我使用utcOffset(false),因为无论出于什么原因,没有它它都无法可靠地工作,我使用了减法(1,'秒')因为结束日期是包含日期的,所以如果没有它,您就无法选择一天的结束日期是否有任何更改…这意味着添加了只选择一天的功能?当您还设置了可选:false时,这非常有效。我不需要使用unselect。可能他们更改了一些内容?您能否举例说明它仅适用于w周视图不在月视图上?@saurabhgoyal795在日历选项中将“defaultView”设置为“agendaWeek”,您只会看到周视图对我不起作用,我现在无法选择任何日期。selective:true
设置为+1,即使您在给定的一天上午11点开始,您仍然可以选择第二天,直到上午10点,因为总时间将为少于24小时,因此此方法不能真正满足OP需求。
selectAllow: function(selectionInfo) {
// Don't allow creation of events over more than 1 day
return moment(selectionInfo.start).utcOffset(false).isSame(moment(selectionInfo.end).subtract(1, 'second').utcOffset(false), 'day');
},