我可以拖动事件,但不能放下它。我的意思是只要我拿着它,我就可以把它拖来拖去。但是当我释放事件时,它立即返回到拖动之前的位置。因此事件eventDrop
从未被调用过。
我将所有属性设置为正确的值。已经检查过很多次了。所有其他功能,如resize
工作良好。
calendar = $('#calendar').fullCalendar({
monthNames: ['Январь', 'Ферваль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
monthNamesShort: ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'],
dayNames: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],
dayNamesShort: ['ВС', 'ПН', 'ВТ', 'СР', 'ЧТ', 'ВТ', 'СБ'],
buttonText: {
prev: ' ◄ ',
next: ' ► ',
prevYear: ' << ',
nextYear: ' >> ',
today: 'сегодня',
month: 'месяц',
week: 'неделя',
day: 'день'
},
titleFormat: {
month: 'MMMM yyyy',
week: "d[ yyyy]{ '—'[ MMM] d, MMMM, yyyy}",
day: 'd, MMMM, yyyy, dddd'
},
columnFormat: {
month: 'dddd',
week: 'ddd, d.M',
day: 'dddd d.M'
},
timeFormat: {
agenda: 'H:mm{ - H:mm}',
'': 'H(:mm)'
},
weekMode: 'liquid',
header: {
left: 'title',
center: '',
right: 'agendaDay,agendaWeek,month today prev,next'
},
defaultView: 'agendaWeek',
allDaySlot: false,
axisFormat: 'H:mm',
defaultEventMinutes: 60,
slotMinutes: 30,
minTime: 8,
maxTime: 20,
firstDay: 1,
editable: true,
selectable: true,
selectHelper: true,
disableDragging: false,
disableResizing: false,
select: function (start, end, allDay) {
...
},
eventClick: function (calEvent, jsEvent, view) {
...
},
eventResize: function(event, dayDelta, minuteDelta, revertFunc) {
...
},
eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc) {
...
}
});
这是一个已知的bug。我假设您正在使用最新版本的jQuery;1.7以上的版本如果是这样的话,你需要更新fullcalendar.js到最新的版本。
$ git clone https://github.com/arshaw/fullcalendar.git
$ cd fullcalendar
$ make
$ cd build/fullcalendar
复制*.js和*.css文件
您是否使用了正确的拖放方法?
eventDrop
用于将日历上已经存在的事件移动到另一个日期。因此,您的代码工作得很好。
drop
是为当你采取一个jQuery-UI可拖动的对象,并把它放在日历。您没有代码来处理这个问题。您需要将droppable
选项设置为true
,并连接到drop
方法。
试试这个,我的更改在底部
calendar = $('#calendar').fullCalendar({
monthNames: ['Январь', 'Ферваль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
monthNamesShort: ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'],
dayNames: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],
dayNamesShort: ['ВС', 'ПН', 'ВТ', 'СР', 'ЧТ', 'ВТ', 'СБ'],
buttonText: {
prev: ' ◄ ',
next: ' ► ',
prevYear: ' << ',
nextYear: ' >> ',
today: 'сегодня',
month: 'месяц',
week: 'неделя',
day: 'день'
},
titleFormat: {
month: 'MMMM yyyy',
week: "d[ yyyy]{ '—'[ MMM] d, MMMM, yyyy}",
day: 'd, MMMM, yyyy, dddd'
},
columnFormat: {
month: 'dddd',
week: 'ddd, d.M',
day: 'dddd d.M'
},
timeFormat: {
agenda: 'H:mm{ - H:mm}',
'': 'H(:mm)'
},
weekMode: 'liquid',
header: {
left: 'title',
center: '',
right: 'agendaDay,agendaWeek,month today prev,next'
},
defaultView: 'agendaWeek',
allDaySlot: false,
axisFormat: 'H:mm',
defaultEventMinutes: 60,
slotMinutes: 30,
minTime: 8,
maxTime: 20,
firstDay: 1,
editable: true,
selectable: true,
selectHelper: true,
disableDragging: false,
disableResizing: false,
select: function (start, end, allDay) {
},
eventClick: function (calEvent, jsEvent, view) {
},
eventResize: function(event, dayDelta, minuteDelta, revertFunc) {
},
eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc) {
alert('Moving an event');
},
droppable: true,
drop: function(date, allDay) {
alert('Dropping an external event');
// The rest of this method is taken from external-dragging.html from the demo files
// retrieve the dropped element's stored Event Object
var originalEventObject = $(this).data('eventObject');
// we need to copy it, so that multiple events don't have a reference to the same object
var copiedEventObject = $.extend({}, originalEventObject);
// assign it the date that was reported
copiedEventObject.start = date;
copiedEventObject.allDay = allDay;
// render the event on the calendar
// the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)
$('#calendar').fullCalendar('renderEvent', copiedEventObject, true);
// is the "remove after drop" checkbox checked?
if ($('#drop-remove').is(':checked')) {
// if so, remove the element from the "Draggable Events" list
$(this).remove();
}
}
});