2015-12-15 2 views
2

Благодаря другому сообщению здесь, в StackOverflow, я добавил код к моему методу select: который запрещает пользователям добавлять событие в дату до СЕЙЧАС.Fullcalendar: Как удалить событие

Недостатком является то, что, когда они нажимают на пустой временной интервал, а затем система жалуется (предупреждающее сообщение), попытка происходит. Как я могу избавиться от него? Благодаря!

Update: Вот мой код:

select: function(start, end, jsEvent) { 

     var check = start._d.toJSON().slice(0,10), 
      today = new Date().toJSON().slice(0,10), 
      m = moment(), 
      url = "[redacted]", 
      result = {}; 
      title = "Class", 
      eventData = { 
       title: title, 
       start: start, 
       end: start.clone().add(2, 'hour'), 
       durationEditable: false, 
       instructorid: 123, 
       locationid: 234 
      }; 


     if(check < today) { 
      alert("Cannot create an event before today."); 

      $("#calendar").fullCalendar('removeEvents', function(eventObject) { 
       return true; 
      }); 

     } else { 

      $.ajax({ type: "post", url: url, data: JSON.stringify(eventData), dataType: 'JSON', contentType: "application/json", success: function(result) { 

       if (result.SUCCESS == true) { 
        $('#calendar').fullCalendar('renderEvent', eventData, true); 
        $('#calendar').fullCalendar('unselect'); 

       } else { 

        alert(result.MESSAGE); 
       } 

      }}); 
     } 
    } 
+0

Можете ли вы показать код? – Laurens

ответ

4

Если вы используете FullCalendar V2, вы должны использовать removeEvents method.

Вы можете использовать его, чтобы удалить события с определенным ID, называя его таким образом:

$("#calendar").fullCalendar('removeEvents', 123); //replace 123 with reference to a real ID 

Если вы хотите использовать свою собственную функцию, которая решает ли не событие получить вынимается, вы можете позвонить это так:

$("#calendar").fullCalendar('removeEvents', function(eventObject) { 
    //return true if the event 'eventObject' needs to be removed, return false if it doesn't 
}); 
+0

Как удалить Eventid для удаления? Это находится в методе select: где мои параметры начинаются, заканчиваются и jsEvent согласно документам. – RobG

+0

В результате вызова 'removeEvents', FullCalendar вызовет ваш обратный вызов для каждого объекта события, с текущим объектом события в качестве параметра, который я назвал' eventObject'. Если вы положите 'console.log (eventObject);' в функцию обратного вызова вместо моего комментария, вы сможете увидеть его содержимое. Вы можете вернуть true или false в зависимости от определенных проверок содержимого «eventObject» (true будет удаляться, false будет сохранено). – leroydev

+0

Спасибо ... Я попробовал один с обратным вызовом, и он ничего не делает. Ошибок нет, но графический пузырь событий остается на странице. Нужно ли мне что-то делать, чтобы удалить его? – RobG

2

FullCalendar имеет метод removeEvent, который использует id при создании события.

Пример Полный календарь v1:

var calendar = $('#calendar').fullCalendar({ ... stuff ... }); 
    calendar.fullCalendar('addEventSource', {id:123, stuff:'stuff'}); 
    // ... other calendar things here... 
    calendar.fullCalendar('removeEvent', 123); 

Reference API v1

Пример FullCalendar v2:

var calendar = $('#calendar').fullCalendar({ ... stuff ... }); 
    calendar.fullCalendar('addEventSource', {id:123, stuff:'stuff'}); 
    // ... other calendar things here... 
    calendar.fullCalendar('removeEvents', [123]); 

Reference API v2

+0

Это для fullCalendar v1, этот метод больше не существует в fullCalendar v2. – leroydev

+0

Спасибо, я обновил свой ответ для обоих. –

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