拖放日期在全日历中无法正常工作

dragging and dropping date not working right in fullcalendar

我正在为我的应用程序使用 jquery 全日历。我正在尝试验证无法将事件拖放到过去 date.Here 是我的代码,

$(document).ready(function() {
        var dragfingDate;

        $('#calendar').fullCalendar({
            //defaultDate: '2015-02-12',
            editable: true,
            eventLimit: true, // allow "more" link when too many events
            events: [  here my events ],
 eventDrop : function(event,revertFunc)
            {
                //var moment = $('#calendar').fullCalendar('getDate');
                //alert("The current date of the calendar is " + moment.format("YYYY-MM-DD"));

                var dropedDate = event.start.format("YYYY-MM-DD");
                alert(dropedDate);
                var todayDate = $('#calendar').fullCalendar('getDate');
                var today_newformatDate = todayDate.format("YYYY-MM-DD");
                alert(today_newformatDate);
                if(dropedDate < today_newformatDate)
                {
                    alert("can not move previous dates.");
                    revertFunc();

                    //$('#calendar').fullCalendar('selectable', false);

                }
                else
                {
                    //alert("can move to next dates.");
                    var r = confirm("Are sure want to shift?");
                    if(r == true)
                    {
                        // here is my ajax code to updte DB
                        //alert("droped "+event.title +"on date of "+event.start.format("YYYY-MM-DD"));
                    }
                    else
                    {
                        revertFunc();
                    }

                }

            }
});

但是这段代码不起作用 fine.when 我第一次拖放,例如 2015-04-27 到 2015-04-20 然后它显示警告 "can not move previous dates." 然后如果再次拖放与某个日期相同的日期意味着删除日期将与我删除日期的位置不同(例如,如果我将 2015-04-28 拖放到 2015-04-15 但删除日期显示为 2015-04-20,15 或其他日期)。

更新:我发现这个问题,当调用 revertfunc 时,无论光标在什么地方移动,它都显示为可选择的 date.when 点击日历,可选择保留某个日期并分配给最近拖动的日期。

为什么会发生这种情况以及如何解决?

问题出在您的 eventDrop 函数上,请尝试将您的函数替换为 :

eventDrop: function( event, delta, revertFunc, jsEvent, ui, view ) {
    // add your logic here 
}

注意:revertFunceventDrop 函数的 third 参数,请查看文档 here.

虽然我想建议的最佳解决方案是,对要传递给日历的数组进行简单更改,即 editable: false,下面是代码。

$('#calendar').fullCalendar({
    events: [
       {
          title  : 'event1',
          start  : '2010-01-09T12:30:00',
          end    : '2010-01-09T12:40:00',
          editable: false //set it to true if you want to make it editable
       }
    ]
});

注意:在上述情况下,您必须事先处理传递给日历的事件数组。