首页 文章

新事件的开始日期在点击事件的开始日期之后 - fullCalendar

提问于
浏览
0

我正在尝试做一些事情,当我点击一个事件时,它会在日历上放置一个新事件 . 此新事件跨越1小时,并且与单击的事件具有相同的开始日期:

eventClick: function(event) {

    var startDate = event.start
    var endDate = startDate.addHours(1) // using the Datejs library

    var eventObject = {
        id: SetGreatestId(), //function that tracks the currently greatest id, also returns that value +1.  
        title: "New Event",
        editable: true, 
        start: startDate,
        end: endDate,
        color: "grey"
    }

    $(element).fullCalendar('renderEvent', eventObject, true)
}

以上功能正常 . 事件将呈现在预期位置 . 问题是当我尝试修改新事件的开始日期时 .

问题是:最初点击的事件的开始日期始终跟随新事件的开始日期 . 我一直在撞墙,试图修复它无济于事 .

当我向上拖动事件时,最初点击的事件的开始日期随之移动(最初点击的事件也将editable设置为false),并不意味着这样做 . 当拖动新事件以使其开始日期超过所单击事件的结束日期时,单击的事件会尝试呈现事件,使得开始日期在结束日期之后发生 .

这都是因为点击事件的开始日期由于某种原因与新事件的开始日期相关联 .

[1]当我在同一个最初点击的事件的范围内拖动一个新事件时,一切正常并且符合预期 .

*** EDIT ***

在句子[1]中,我的意思是:当我使用select方法通过拖动向日历添加新事件,并且在最初点击的事件的时间范围内拖动新事件时,一切正常并且正如所料 .

1 回答

  • 1

    没有Date.js专家,但在这里:

    var endDate = startDate.addHours(1) // using the Datejs library
    

    假设startDate是一个普通的Date对象,在我看来endDate和startDate将引用相同的日期对象,并且你只是向该对象添加1小时 . 您可能需要:

    // Create a duplicate of startDate
    var endDate = new Date(+startDate);
    
    // Increment it by 1 hour
    endDate.setHours(endDate.getHours() + 1);
    

    以上不使用Date.js.

相关问题