2016-05-23 1 views
0

Я использую плагин fullcalendar jquery для создания расписания событий. Я хочу, чтобы пользователь не удалял внешнее событие в календаре, если оно раньше текущей даты. Это мой текущий код:предотвращает вскрытие внешнего события по полному календарю, если раньше сегодняшней даты

$('#edit_calendar').fullCalendar({ 
    header: 
    { 
     left: 'prev,next today', 
     center: 'title', 
     right: 'month,agendaWeek,agendaDay' 
    }, 
    titleFormat: { month: 'MMMM' }, 
    defaultView: 'month', 
    droppable: true, 
     drop: function (date, jsEvent, ui, resourceId) { 
      //compare today's date with drop date - if in the past, don't allow 
      var today = moment().startOf('day'); 
      var dropDate = moment(date).startOf('day'); 
      if (dropDate < today) 
      { 
       //The alert is shown 
       alert("An event in the past cannot be added, updated, or deleted."); 
       return false; 
      } 
      else 
      {    
       var memberName = $(this).data('event').title; 
       var memberID = $(this).attr('id').toString();   
       //Create Event - add to array 
       var newEvent = new Object(); 
       newEvent = { 
        title: memberName, 
        id: memberID, 
        start: date.format(), 
        end: date.format(), 
        objectID: 0 
       }; 
       eventsAdded.push(newEvent); 
      } 
     }, 
     ...rest of code 

Если событие отбрасывается до текущего дня отображается предупреждение и не создают события. Если показано после текущего дня, создайте событие.

В приведенном выше коде отображается предупреждение, но событие все еще создано. Если событие отбрасывается после текущего дня, событие создается.

Я подумал, добавив return false после отображения предупреждения, это предотвратит создание события. Тем не менее, отображается предупреждение и создается событие.

Должен ли я удалить событие или есть способ предотвратить создание события?

ответ

1

Мне удалось ограничить события, когда они были добавлены или изменены с помощью selectConstraint и eventConstraint соответственно. Однако я хотел бы добавить предупреждение, когда пользователь пытается обновить или добавить событие за пределы дат начала и окончания, чтобы они знали, почему он не работает.

Это то, что у меня есть:

$('#edit_calendar').fullCalendar({ 
    header: 
    { 
     left: 'prev,next today', 
     center: 'title', 
     right: 'month,agendaWeek,agendaDay' 
    }, 
    titleFormat: { month: 'MMMM' }, 
    defaultView: 'month', 
    droppable: true, 
     drop: function (date, jsEvent, ui, resourceId) {  
      var memberName = $(this).data('event').title; 
      var memberID = $(this).attr('id').toString();   
      //Create Event - add to array 
      var newEvent = new Object(); 
      newEvent = { 
       title: memberName, 
       id: memberID, 
       start: date.format(), 
       end: date.format(), 
       objectID: 0 
      }; 
      eventsAdded.push(newEvent);  
     }, 
     editable: true, 
      //The following constraints prevents the user from adding/updating/deleting events that are before the current date 
      //The end date is required. So, you can't add events over a year away from the current date 
      eventConstraint: { 
       start: moment().startOf('day'), 
       end: moment(moment().startOf('day'), 'MM-DD-YYY').add('days', 365) 
      }, 
      selectConstraint: { 
       start: moment().startOf('day'), 
       end: moment(moment().startOf('day'), 'MM-DD-YYY').add('days', 365) 
      }, 
      ...rest of code... 

Есть ли способ, я могу добавить сигнал, когда пользователь пытается добавить или обновить событие оу

+0

Привет, Это хороший вопрос. Пожалуйста, разместите его как новый вопрос и удалите этот ответ. Если ответ предварительного просмотра дал вам решение исходного вопроса, вы можете пометить ответ как правильный ответ.Я буду рад помочь вам с новым вопросом при публикации. –

+0

Я смогу выбрать вышеуказанное в качестве ответа, так как он отвечает на исходный вопрос. Вот ссылка на новый вопрос: [добавить предупреждение при добавлении события за пределы ограничений] (http://stackoverflow.com/questions/37414485/fullcalendar-add-alert-when-adding-an-event-outside-the- ограничения) –

+0

Да, что я имел в виду, я автор ответа выше ... :-) –

0

From the documentation:

eventDrop не дозвонились, когда внешние земли событий в календаре. eventReceive называется вместо

Сказав это, чтобы предотвратить падение, вам нужно снова вернуться в цепочку. Вам нужно использовать «dropAccept». You can read about it in the documentation.

+0

Я не использую 'eventDrop'. Я использую '' drop'. –

+0

Да, извините, но ответ по-прежнему действителен. Измените «drop» на «dropAccept» –

+0

Функция «drop» вызывается сразу после «dropAccept», вы можете увидеть цепочку по ссылке (в верхнем правом углу страницы) –

Смежные вопросы