2011-01-10 3 views
16

Календарь позволяет пользователю перетаскивать временной интервал в календарь, однако я бы хотел, чтобы они могли его удалить, если они нажмут на него.Как удалить это событие из FullCalendar?

Таким образом, в eventClick У меня есть эта функция:

function (calEvent) { 
    removeRequestedEvent($(this), calEvent); 
}, 

Он просто проходит в календаре события, а сам календарь.

removeRequestedBooking: function (cal, calEvent) { 
    if (!confirm("Delete?")) 
     return; 

    cal.fullCalendar("removeEvents", calEvent.id); 
    cal.fullCalendar("rerenderEvents"); 

    // Re-show draggable element 
    $("#requests #" + calEvent.id).show(); 
} 

Я также пробовал использовать фильтр, но точка останова на операторе return никогда не попадала.

cal.fullCalendar("removeEvents", function (event) { 
     return event.id == calEvent.Id; 
    }); 

Любые идеи? (Я знаю, что Id прав, и работает последняя строка). Firebug не показывает ошибок в javascript.

Я использую FullCalendar v1.4.10

+0

Вместо использования проходили в кале, вы можете попробовать использовать вызов в DIV, который держит свой календарь? – justkt

+0

@justkt вы гений. Пожалуйста, отправьте ответ, и я приму его. Вы знаете, почему это не сработало? Является ли вызов с использованием $ (this) неверным? – Brandon

ответ

4

Вместо использования проходили в кале, вы можете попробовать использовать вызов в DIV, который держит свой календарь?

В случае с eventClick, this относится к HTML для события в соответствии с тем, что я читаю в документах.

+0

Еще раз спасибо за помощь. – Brandon

4

Использование refetchEvents:

cal.fullCalendar("refetchEvents"); 
2

Я использую функцию фильтра с event.start и работает хорошо

calendar.fullCalendar('removeEvents', function(event) { 
    return 
    $.fullCalendar.formatDate(event.start, 'yyyyMMdd') 
    == $.fullCalendar.formatDate(start, 'yyyyMMdd'); 
}); 
3

ответ Justkt взяла мне вторую, чтобы обернуть вокруг моей головы, но я выложу мои результаты для любых других нубов, которым необходимо увидеть код в очень простой форме:

eventClick: function(event){ 
    var event_id = event.id; 
    $.post('/Dropbox/finance/index.php/welcome/update', {"event_id": event_id}, 
     function(data){ 
      $('#calendar').fullCalendar("removeEvents", (data)); 
      $('#calendar').fullCalendar("rerenderEvents");     
     } 
     }); 
} 

PHP (используя codeignighter):

public function update(){ 
    $result = $this->input->post('event_id'); 
    echo $result; 
    // would send result to the model for removal from DB, or whatever 
} 
26

Если у вас есть все ваши идентификаторы, используйте решение Tuan.

Но когда вы не имеете идентификаторы в вашем случае это сделать, как это (эту работу также, когда у вас есть набор идентификаторов):

eventClick: function(event){ 
    $('#myCalendar').fullCalendar('removeEvents',event._id); 
} 

Почему эта проблема появляется? Общей причиной этого является то, что fullcalendar не добавляет идентификатор автоматически при добавлении нового события. Если это так, идентификатор, который вы прошли, не определен. Fullcalendar использует id в обоих случаях, когда вы пытаетесь удалить с помощью id или filter. Поэтому, когда значение не определено, оно всегда возвращает false. Значение списка удаляемых элементов всегда пусто.

+0

Работал очень много ура! – Manwal

+0

Привет, Он работает очень хорошо. Но мне нужно удалить событие, но у меня нет способа получить внутренний идентификатор события календаря (aka '_id').Так как вы можете вызвать 'removeEvents' и передать функцию' id' o, как я могу удалить без использования '_id'? используя функцию или что-то, но я не знаю, как – jBaumann

8

Еще проще:

eventClick: function(calEvent, jsEvent, view) { 
    $('#calendar').fullCalendar('removeEvents', function (event) { 
     return event == calEvent; 
    }); 
} 
+0

Это должен быть лучший ответ bro =) – whatswrong

+0

Этот ответ не только дает отличное решение (нет необходимости использовать какие-либо идентификаторы!), но также помогает понять, как работает функция removeEvents (второй параметр может быть функцией, которая возвращает события (ы), которые мы хотим удалить!) –

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