获取调整大小事件的完整日历工作时间

时间:2018-03-13 09:26:26

标签: javascript jquery fullcalendar

我已实施完整日历以维护某些活动。现在,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);
  }
});

3 个答案:

答案 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;
   }
}