Поэтому я недавно добавил контекстное меню к событиям в моем FullCalendar, используя jQuery contextMenu (http://abeautifulsite.net/blog/2008/09/jquery-context-menu-plugin/).). Это прекрасно работает, за исключением того, что моя способность перетаскивания перестала работать правильно, когда вы перетаскиваете событие и отпускаете другую дату дата события не изменяется, и он перенаправляет на URL-адрес события. Я провел некоторую проверку и понял, что не все события eventDrop, eventDragStart и eventClick запускаются. Если я закомментирую контекстное меню, все будет хорошо. Если кто-то может выяснить, почему contextMenu препятствует запуску обратных вызовов fullCalendar, я был бы признателен, так как contextMenu полностью соответствует моим потребностям.
Код для contextMenu и обратных вызовов событий:
eventRender: function(event, element) {
if (event.url.indexOf("https://www.google.com") != 0)
{
element.contextMenu({
menu: "myMenu",
},
function(action, el) {
if (action == "approve") {
$.ajax({
url: 'events/' + event.id,
data: { 'event' : { 'status' : "Approved", } },
type: "PUT",
}),
$('#calendar').fullCalendar('refetchEvents');
} else if (action == "deny") {
$.ajax({
url: 'events/' + event.id,
data: { 'event' : { 'status' : "Denied", } },
type: "PUT",
}),
$('#calendar').fullCalendar('refetchEvents');
} else if (action == "destroy") {
if (confirm("Are you sure you want to delete this event?") ) {
$.ajax({
url: 'events/' + event.id,
type: "DELETE",
}),
$('#calendar').fullCalendar('refetchEvents');
}
}
else if (action == "edit") {
window.location = 'events/' + event.id + '/edit'
}
}
);
}
},
eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc){
updateEvent(event);
},
eventResize: function(event, dayDelta, minuteDelta, revertFunc){
updateEvent(event);
},
eventClick: function(event) {
if (event.url.indexOf("https://www.google.com") != 0) {
$.facebox(function() {
$.get('events/' + event.id,
function(data) {
$.facebox(data)
}
);
})
return false;
}
return false;
}