简体   繁体   English

Fullcalendar eventDrop回调函数从全天事件失败到限时事件

[英]Fullcalendar eventDrop callback function Fails from All-Day Event to Time Limited Event

I have a eventDrop callback function that works when going from a time-limited event to time-limited event but does not work when going from an all-day event to a time-limited event. 我有一个eventDrop回调函数,该函数在从限时事件变为限时事件时有效,但在从全天事件变为限时事件时不起作用。 Can anyone tell me what I am doing wrong or is this a bug to be reported. 谁能告诉我我做错了什么,或者这是一个要报告的错误。 I am not experienced enough with fullcalendar to determine which one it is. 我对全日历没有足够的经验来确定它是哪一个。

See JS Bin link below for javascript and example of problem. 有关JavaScript和问题示例,请参见下面的JS Bin链接。

http://jsbin.com/taxopo/edit?js,output http://jsbin.com/taxopo/edit?js,输出

$(function() { 
    $('#calendar').fullCalendar({
        header: {
          left: 'prev,next today',
          center: 'title',
          right: 'month,agendaWeek,agendaDay'
        },
        editable: true,
        eventLimit: true, // allow "more" link when too many events
        eventDrop: function(event, delta, revertFunc, jsEvent, ui, view) {event_drop(event, delta, revertFunc);},
        events: [{
            id: 'SCH1014',
            title: 'Mcm Plastics, Inc.',
            start: '2016-12-15',
            end: '2016-12-16',
            allDay: true,
            className: 'qtip-tip',
            color: '#76819D',
            description: 'Proposed Service Pending Email Request'
        },/*...*/]
    });
});

function event_drop(event, delta, revertFunc) {
    var start = jQuery.fullCalendar.moment(event.start.format('MM-DD-YYYY'));
    var end = jQuery.fullCalendar.moment(event.end.format('MM-DD-YYYY'));
    var myStartDate = start.format('MM-DD-YYYY');
    var myEndDate = end.format('MM-DD-YYYY');
    var id = event.id;
    var myEvent = [];

    if (start.hasTime()) {
        var myStartTime = start.format('hh:mm:ss A');
        var myEndTime = end.format('hh:mm:ss A');
        myEvent.push(id, myStartDate, myEndDate, myStartTime, myEndTime);
    } else {
        myEvent.push(id, myStartDate, myEndDate);
    }

    var data = '__myEvent='+myEvent;
    alert(data);
}

event.end is not always set and needs to be checked before you try and use it event.end并非始终设置,需要在使用前进行检查

Something like the following should work: 类似于以下内容的东西应该起作用:

function event_drop(event, delta, revertFunc) {
    var noEnd = false; 
    if(event.end == null){ 
        noEnd = true;
    }

    var start = jQuery.fullCalendar.moment(event.start.format('MM-DD-YYYY'));
    var end = noEnd || jQuery.fullCalendar.moment(event.end.format('MM-DD-YYYY'));


    var myStartDate = start.format('MM-DD-YYYY');
    var myEndDate = noEnd || end.format('MM-DD-YYYY');
    var id = event.id;
    var myEvent = [];

    if (start.hasTime()) {
        var myStartTime = start.format('hh:mm:ss A');
        var myEndTime = noEnd || end.format('hh:mm:ss A');
        myEvent.push(id, myStartDate, myEndDate, myStartTime, myEndTime);
    } else {
        myEvent.push(id, myStartDate, myEndDate);
    }

    var data = '__myEvent='+myEvent; // I have no idea what this is achieving
    alert(data);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM