拖放在完整日历中不起作用



我可以拖动事件,但不能放下它。我的意思是只要我拿着它,我就可以把它拖来拖去。但是当我释放事件时,它立即返回到拖动之前的位置。因此事件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();
           }
        }
    });

相关内容

  • 没有找到相关文章

最新更新