完整日历更新事件。无法读取未定义的属性'clone'



我正在使用FullCalendar并尝试使用模态更新事件。当我尝试更新事件时,我得到了未定义的无法读取属性"克隆"。

我正在使用clientEvents方法,如他们的文档中所述

事件

必须是事件的原始事件对象,而不仅仅是重建的对象。原始事件对象可以通过回调(如 eventClick)或 clientEvents 方法获取。

但是,要获取我的原始事件,当我提交时,我仍然收到此错误。

这是我的代码:

initializeFullCalendar: function () {
        var loc = $('#locationCodes').val();
        $('.autocomplete').keypress(function (key) {
            if (key.charCode == 32 && $('.autocomplete').val().length >= 1) { return true };
            //  if (key.charCode == 92 || key.charCode == 47 || key.charCode < 65) return false;
        });
        $(document).tooltip({
            track: true,
            hide: { effect: "explode", duration: 300 }
        });
        $('#calendar').fullCalendar({
            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month,basicWeek,basicDay'
            },
            selectable: true,
            selectHelper: true,
            dayclick: function(date){
            },
            select: function (date, start, end) {
                if ($('#job').attr('class') === 'XXX') {
                    EMP.calendarPopup(date, start, end);
                } 
            },
            eventSources: [
                {
                    url: '/Home/getAllEvents/',
                    data: { Locations: loc },
                    type: 'POST'
                }
            ],
            eventClick: function (event, element, date) {

                EMP.editCalendarPopup(date, event);

            },
            height: 350,
            defaultView: 'basicWeek',
            editable: true,
            eventLimit: true, // allow "more" link when too many events
            eventRender: function (data, element) {

                var start = moment(data.start._i).format('LT');
                var end = moment(data.end._i).format('LT');               
            }
        });
    },
    editCalendarPopup: function (date, event) {
        $('.calendar-popup').addClass('active edit');
        var event_date = event.start._i.split("T")[0];
        var start = event.start._i.split("T")[1]
        var end = event.end._i.split("T")[1];
        start = EMP.convert12hr(start);
        end = EMP.convert12hr(end);
        var startTime = start.split(' ')[0];
        var startMod = start.split(' ')[1];
        var endTime = end.split(' ')[0];
        var endMod = end.split(' ')[1];

        $('#date').val(event_date);
        $('#calendar-event').val(event.title);
        $('#calendar-custodian').val(event.cust);
        $('#calendar-start').val(startTime);
        $('#startampm').val(startMod)
        $('#calendar-end').val(endTime);
        $('#endampm').val(endMod);
        $('#hiddenEvent').val(event.title);
        $('#hiddenCustodian').val(event.cust);
        $('#hiddenStart').val(event.start._i);
        $('#hiddenEnd').val(event.end._i);
        $('#hiddenId').val(event._id);

    },
    editCalendarAjax: function() {
        var event = $("#calendar").fullCalendar('clientEvents');
        var hiddenId = $('#hiddenId').val();
        event = $.grep(event, function(e){return e._id === hiddenId});
        event = event[0];

        var event_date = $('#date').val();

        var title = $('#calendar-event').val();
        var cust = $('#calendar-custodian').val();
        var start = $('#calendar-start option:selected').val();
        var end = $('#calendar-end option:selected').val();
        var startampm = $("#startampm option:selected").val();
        var endampm = $("#endampm option:selected").val();
        start = start + " " + startampm;
        end = end + " " + endampm;
        start = EMP.convert24hr(start);
        end = EMP.convert24hr(end);
        var locCode = $('.location').attr('id');
        var date_start = event_date + "T" + start;
        var date_end = event_date + "T" + end;
        if (title) {
            event = {
                title: title,
                start: date_start,
                cust: cust,
                end: date_end
            };
            $('#calendar').fullCalendar('updateEvent', event);
        }
        var origEvent = $('#hiddenEvent').val();
        var origCust = $('#hiddenCustodian').val();
        var origStart = $('#hiddenStart').val();
        var origEnd = $('#hiddenEnd').val();
        item = {};
        item["title"] = title;
        item["cust"] = cust;
        item["start"] = date_start;
        item["end"] = date_end;
        item["locCode"] = locCode;
        item["origEvent"] = origEvent;
        item["origCust"] = origCust;
        item["origStart"] = origStart;
        item["origEnd"] = origEnd;

        $.ajax({
            type: "POST",
            url: "/Home/updateCalendar",
            data: item,
            success: function () {
                console.log('success!');
            },
            error: function (xhr, ajaxOptions, thrownError) {
                window.alert("Please click here to refresh your session");
                console.log('error')
            }
        });

        $('#calendar').fullCalendar('unselect');
        EMP.togglePopups();

    },

问题是我使用的是旧版本的FullCalendar。更新后,我停止收到错误。

我必须改变的另一件事是:

if (title) {
     event = {
            title: title,
            start: date_start,
            cust: cust,
            end: date_end
        };
        $('#calendar').fullCalendar('updateEvent', event);
    }

对此:

if (title) {
            event.title = title;
            event.start = date_start;
            event.cust = cust;
            event.end = date_end;
            $('#calendar').fullCalendar('updateEvent', event); // stick? = true
        }

因为我正在覆盖我的事件。现在一切正常。

相关内容

最新更新