我在我的項目中使用Fullcalendar(http://arshaw.com/fullcalendar)。它通過json源獲取事件。Javascript Fullcalendar - 複製事件
我想給用戶選擇複製日曆上的一個事件到另一天 - 我想用拖動(嗯,這是客戶的要求)。
但拖動似乎是移動一個事件,而不是複製 - 有沒有辦法讓被拖動的事件的「副本」(或複製停留在原始位置),所以它看起來像複製操作?
我試圖在eventDragStart回調中複製事件對象,但它不起作用。
我在我的項目中使用Fullcalendar(http://arshaw.com/fullcalendar)。它通過json源獲取事件。Javascript Fullcalendar - 複製事件
我想給用戶選擇複製日曆上的一個事件到另一天 - 我想用拖動(嗯,這是客戶的要求)。
但拖動似乎是移動一個事件,而不是複製 - 有沒有辦法讓被拖動的事件的「副本」(或複製停留在原始位置),所以它看起來像複製操作?
我試圖在eventDragStart回調中複製事件對象,但它不起作用。
試試這個:
eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view) {
// Create an event object and copy at least the start date and the title from event
var eventClone = {
title:event.title,
start: event.start,
end: event.end
};
// Render new event with new event object
$('#calendar').fullCalendar('renderEvent', eventClone);
// Revert the changes in parent event. To move it back to original position
revertFunc();
}
這只是想法。我沒有測試過這個代碼。請讓我知道它是如何工作的。 謝謝
您可能必須使用[clone方法](http://stackoverflow.com/questions/122102/what-is-the-most-efficient克隆一個JavaScript對象)來創建開始和結束日期的深層副本。但不要克隆整個事件對象。因爲它包含可能導致問題的_id(由fullCalendar分配給每個事件的ID)。 – 2012-04-26 13:51:39
下面是我的解決方案,允許用戶按住shift鍵複製事件。 請注意,這實際上是在移動原始事件並將副本留在原始位置。
我開始與this reference,並創建了以下內容:
//Before the fullCalendar object
var copyKey = false;
$(document).keydown(function (e) {
copyKey = e.shiftKey;
}).keyup(function() {
copyKey = false;
});
//then inside the fullCalendar object
eventDragStart: function (event, jsEvent, ui, view) {
if (!copyKey) return;
var eClone = {
title: event.title,
start: event.start,
end: event.end
};
$('#calendar').fullCalendar('renderEvent', eClone);
},
會很高興看到這一小提琴 – HPWD 2018-01-30 02:13:07
IMO在此線程最後一個註釋可以給你一個起點http://code.google.com/p/fullcalendar/issues/detail ?id = 105 – 2012-04-24 21:11:42
如果你以某種方式實現這一點。您將失去拖動功能。你能接受嗎? – 2012-04-25 21:50:37
是的,我只需要複製,而不是移動事件... – kender 2012-04-26 07:47:58