Jquery 上下文菜单中断完整日历事件拖动
因此,我最近使用jQuery contextMenu向我的完整日历中的事件添加了一个上下文菜单(http://abeautifulsite.net/blog/2008/09/jquery-context-menu-plugin/). 它工作得很好,除了我的拖放功能停止正常工作之外,当你拖动一个事件并跳过另一个日期时,事件日期不会改变,它会重定向到事件的url。我做了一些检查,发现eventDrop、eventDragStart和eventClick都没有被触发。如果我注释掉上下文菜单,一切正常。如果有人能弄明白为什么contextMenu会阻止fullCalendar回调被解雇,我会很感激,因为contextMenu完全符合我的需要。 上下文菜单和事件回调的代码:Jquery 上下文菜单中断完整日历事件拖动,jquery,ruby-on-rails,contextmenu,fullcalendar,Jquery,Ruby On Rails,Contextmenu,Fullcalendar,因此,我最近使用jQuery contextMenu向我的完整日历中的事件添加了一个上下文菜单(http://abeautifulsite.net/blog/2008/09/jquery-context-menu-plugin/). 它工作得很好,除了我的拖放功能停止正常工作之外,当你拖动一个事件并跳过另一个日期时,事件日期不会改变,它会重定向到事件的url。我做了一些检查,发现eventDrop、eventDragStart和eventClick都没有被触发。如果我注释掉上下文菜单,一切正常。
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;
}
好吧,因为这看起来不会得到回答,我的解决方案是切换到一个不同的上下文菜单插件(http://www.trendskitchens.co.nz/jquery/contextmenu/)这是非常相似的,并没有造成任何问题与完整的日历。这并不是一个解决任何问题的方法,阻止这个插件使用完整的日历,但它是一个让我的程序正常运行的方法。对于那些不想更改插件的人来说,要解决上下文菜单破坏dragability的问题,我修改了jquery.contextMenu.js 发件人: 到 这将阻止上下文菜单插件在左键单击时执行任何操作,仅在右键单击时执行
$(this).mousedown( function(e) {
var evt = e;
evt.stopPropagation();
$(this).mouseup( function(e) {
e.stopPropagation();
var srcElement = $(this);
$(this).unbind('mouseup');
if (evt.button == 2) {
$(this).mousedown( function(e) {
var evt = e;
evt.stopPropagation();
$(this).mouseup( function(e) {
if (evt.button == 2) {
e.stopPropagation();
var srcElement = $(this);
$(this).unbind('mouseup');