我已实施完整日历以维护某些活动。现在,fullcalendar实现了一些默认的营业时间。假设我已将工作时间设定为10:00到17:00。
现在我要在15:30到16:30之间创建活动。现在,当我调整事件并将其拉伸并将其结束到17:30(即营业时间之外)时,我希望它能够恢复更改。
以下是我如何初始化fullcalendar:
$('#calendar').fullCalendar({
header: {
left: '',
center: '',
right: '',
},
firstDay: 0,
editable: true,
selectable: true,
defaultView: 'agendaWeek',
columnFormat: 'dddd',
events: events_data,
eventResize: function(event, delta, revertFunc) {
console.log($(this).businessHours);
}
});
答案 0 :(得分:0)
在eventResize
功能中,您可以查看event
参数并检查输入。
function isBusinessHour(event) {
// Check if your event.start and event.end is in business hours
// Using moment functions such as isBetween()
}
eventResize: function(event, delta, revertFunc) {
if (!isBusinessHour(event))
revertFunc();
}
答案 1 :(得分:0)
要实现此目的,您可以设置" eventConstraint"选择" businessHours":
eventConstraint: "businessHours"
此设置的文档说明:
如果" businessHours"给出,拖动或调整大小的事件必须是 完全包含在本周的营业时间内(周一至周五) 默认为上午9点至下午5点)。将尊重自定义businessHours值。
有关详细信息,请参阅https://fullcalendar.io/docs/eventConstraint。
答案 2 :(得分:0)
即使使用版本4,它也不起作用。 您需要比较事件值和营业时间值:`
eventDrop: function(info) {
var format = 'HH:mm';
// get moment as time:min only
var ies = moment(info.event.start);
var tes = ies.hours()+':'+ies.minutes();
var event_start = moment(tes,format);
var iee = moment(info.event.end);
var tee = iee.hours()+':'+iee.minutes();
var event_end = moment(tee,format);
// get business hours
var bh_start = moment(calendar.getOption('businessHours')['startTime'],format);
var bh_end = moment(calendar.getOption('businessHours')['endTime'],format);
if ( event_start.isBefore( bh_start ) || event_end.isAfter( bh_end )) {
console.log(' out of busqiness hours');
info.revert();
return false;
}
}