fullcalendar.io - 在内存中保存事件

时间:2018-02-09 07:49:14

标签: javascript jquery fullcalendar momentjs bootstrap-datetimepicker

我相信javascript正在memmory中举办活动,但我无法弄清楚在哪里以及如何解决这个问题。也许你们可以提供帮助。我创建了一个JSFiddle来演示问题

JSFIDDLE

当你更新一个事件时会发生这种情况。然后你转移到另一个事件去更新该事件。它将旧事件带入新事件。改变开始和结束以及一切。第一个事件更新正常。

单击事件时。这些功能被解雇了。

function eventClick(calEvent){
    $('#edit-event-title').val(calEvent.code);
    $('#edit-event-description').val(calEvent.description);
    $('#event-start-edit-dpick').data('DateTimePicker').date(calEvent.start).format('YYYY-MM-DD');
    $('#event-start-time-edit-dpick').data('DateTimePicker').date(calEvent.start).format('HH:mm');
    $('#event-end-edit-dpick').data('DateTimePicker').date(calEvent.end).format('YYYY-MM-DD');
    $('#event-end-time-edit-dpick').data('DateTimePicker').date(calEvent.end).format('HH:mm');
    $('#fc_edit').click();
}


function createUpdateEvent(calEvent, create) {
        //create event
        if(create){
            // create the event
        } else {
            $(".antosubmit2").on("click", function() {
                calEvent.code = $("#edit-event-title").val();
                calEvent.title = $("#edit-event-title option:selected").html();
                calEvent.description = $("#edit-event-description").val();
                calEvent.start = moment($('#event-start-edit-dpick').data('DateTimePicker').date().format('YYYY-MM-DD') + ' ' +
                $('#event-start-time-edit-dpick').data('DateTimePicker').date().format('HH:mm') +
                $('#event-start-edit-dpick').data('DateTimePicker').date().format('Z'));
                calEvent.end = moment($('#event-end-edit-dpick').data('DateTimePicker').date().format('YYYY-MM-DD') + ' ' +
                $('#event-end-time-edit-dpick').data('DateTimePicker').date().format('HH:mm') +
                $('#event-end-edit-dpick').data('DateTimePicker').date().format('Z'));
                calendar.fullCalendar('updateEvent', calEvent);

                $('.antoclose').click();
            });
        }

    }

function recalcHeaderHours(event){
        var currentday = moment(event.start).format("YYYY-MM-DD");
        if (event.totalHours > 0) {
            var prev = $("#dailytotal-"+currentday).text() || 0;
            $("#dailytotal-"+currentday).text(+prev + +event.totalHours);
        }
    }

我希望你们能提供帮助。谢谢你的时间:)

1 个答案:

答案 0 :(得分:1)

我解决了你的问题。 问题是你将点击事件放在第83行的“.antosubmit2”中。在第一个事件打开时,将有1次点击此类,但在2.事件打开时,代码再次点击它。如果您只打开一次活动2次,则没有问题。但它是你在不同的事件上做的,在第二次打开时,它点击2次点击。新添加的单击使用正确的数据,但第一次单击使用第一个事件数据。我想这是你的问题。 第一次单击应该从“.antosubmit2”取消绑定。 尝试修改你的代码:

function createUpdateEvent(calEvent, create) {
    //create event
    if(create){
        // create the event
    } else {
        $(".antosubmit2").unbind('click');
        $(".antosubmit2").on("click", function() {...

您会看到“取消绑定('点击')”行,将其添加到代码中,它就能正常工作。