fullcalendar - 移动的事件在点击时再次恢复到旧日期 prev/next

fullcalendar - moved event again restore to old date when click prev/next

我在我的应用程序中使用 fullcalendar(v2.0.0)。从数据库和用户显示的所有事件都可以拖放和更新事件。一切正常,除了单击全日历的 next/prev 按钮 时 丢弃的事件再次进入旧日期。

检查我的 fiddle http://jsfiddle.net/Manivasagam/3E8nk/1021/

$('#calendar').fullCalendar({
events:"/FullcalendarProject/FullCalendarChecking" 
  // my events will be like this from DB [{title: 'Plants',start: '2015-05-18'}, {title: 'Animals',start: '2015-05-23'}]

});

确切的问题是如果我将 Plants 事件拖放到 2015-05-20 然后它移动到 2015-05-20 但如果我单击 next/prev然后再次移动事件回到 2015-05-18。

为什么会这样?如何解决这个问题?

您需要编写日历的放置事件回调,您将在其中将新日期发送到服务器,服务器将更新数据库中的事件日期,因此下次它会带有更新日期,如下所示

$('#calendar').fullCalendar({
events:"/FullcalendarProject/FullCalendarChecking" ,
  // my events will be like this from DB [{title: 'Plants',start: '2015-05-18'}, {title: 'Animals',start: '2015-05-23'}]
eventDrop: function (event, delta, minuteDelta, allDay, revertFunc) {
                console.log(event);
//asking for confirmation from user using $.prompt you can skip and send direct ajax
                $.prompt("Are you sure you want to move the events "+delta+" days?", {
                    title: "Are you Sure?",
                    buttons: { "Yes": true, "No": false },
                    submit: function (e, v, m, f) {
                        // use e.preventDefault() to prevent closing when needed or return false.
                        // e.preventDefault();
                        if (v)
                        {
                            $.ajax({
                                url: "/modules/crm_events/support/changeEventDate.php",
                                data: { id: event.id, changeDays: delta , table:event.className[2] , part:event.part },
                                type: "GET",
                                dataType: "json",
                            }).done(function (data) {

                            });
                        }
                        else
                        {
                            revertFunc();
                        }
                    }
                });
            },
});