Fullcalendar 编辑全天完整日历事件会将其转换为非全天事件

Fullcalendar 编辑全天完整日历事件会将其转换为非全天事件,fullcalendar,Fullcalendar,编辑全天事件时,fullCalendar(2.0.2)将其转换为非全天事件。在日历视图中单击事件时,我加载一个模式,允许用户编辑详细信息。选择allDay或time不是此操作的一部分,但date是。单击submit后,我启动一个AJAX调用,更新事件服务器端,然后返回包含事件id的JSON数据。然后查询fullCalendar以获得正确的事件。此时,全天和全天仍然是正确的: theEvent = $('#calendar').fullCalendar('clientEvents', data.i

编辑全天事件时,fullCalendar(2.0.2)将其转换为非全天事件。在日历视图中单击事件时,我加载一个模式,允许用户编辑详细信息。选择allDay或time不是此操作的一部分,但date是。单击submit后,我启动一个AJAX调用,更新事件服务器端,然后返回包含事件id的JSON数据。然后查询fullCalendar以获得正确的事件。此时,
全天
全天
仍然是
正确的

theEvent = $('#calendar').fullCalendar('clientEvents', data.id)[0];
> theEvent.allDay
true
> theEvent._allDay
true
然后,我使用已编辑的事件对象更新fullCalendar:

calendar.fullCalendar('updateEvent', theEvent);
编辑完成后,事件将显示在日历中,并在事件标题前显示
12a

我可以跟踪到fullCalendar中的
mutateEvent
函数,该函数似乎在以下条件下覆盖了我的设置:

// current values are:
// event.allDay: true
// oldAllDay: true
// newStart: Moment object - Mon Jan 19 2015 00:00:00 GMT-0600 (CST)
// newEnd: null

// detect new allDay
if (event.allDay != oldAllDay) { // if value has changed, use it
    newAllDay = event.allDay;
} else { // otherwise, see if any of the new dates are allDay
    newAllDay = !(newStart || newEnd).hasTime();
}
我不认为我做错了什么,但我不能肯定。有人对此有意见吗?谢谢你。目前我无法升级到更新的版本,因为这个版本(2.0.2)似乎与我的客户选择的Ace Admin引导主题有些关联


或者,我希望能够只允许全天活动,这样我以后就不必担心这个问题。

虽然这并不能真正解决问题,但这个答案解决了我的问题

只需将fullCalendar timeFormat属性设置为“”。就我而言,我只有全天的活动,所以我永远不需要时间

$(“#日历”).fullCalendar({
活动:[
{
标题:“我的活动”,
开始:“2010-01-01T14:30:00”,
全天:错
}
//这里的其他活动。。。
],
时间格式:“”
});

这似乎是一个在更高版本中修复的错误。最新版本

发生的情况是,当您更改开始或结束日期并且更改的日期有时间时,它会设置
allDay=false
。问题重现

解决方案非常简单,当事件全天进行时,删除开始/结束的时间部分。无论如何,它不应该在那里

var fcEvent=$('#calendar').fullCalendar(“客户事件”,id)[0]//获取事件
//更改开始日期并将其转换为字符串,去掉时间。
fcEvent.start=moment().format(“YYYY-MM-DD”);
$('#calendar').fullCalendar(“updateEvent”,fcEvent);


如果(fcEvent.allDay)将其设置为有条件的,
if(fcEvent.allDay)
,它应该可以在不破坏其他功能的情况下修复问题。

您是否尝试过最新版本?我知道你说它可能与你的模板有关;但也许值得一试,看看这是否是一个在新版本中修复的bug。然后,您可以决定如何升级它和模板,如果它工作的话。这似乎并不能解决问题。