我正在使用FullCalendar,它运行良好。我允许用户拖动事件,但有时我需要强制事件在特定日期开始。例如,有些事件必须在星期一开始,所以如果用户将其拖到另一个工作日,我将强制事件移到上一个星期一。
所以,在eventDrop回调中,我有这样的东西:
jQuery('#calendar').fullCalendar({
...
...
eventDrop: function(event, delta, revertFunc) {
if (/*must force new event start date*/) {
var duration = event.end.diff(event.start, 'd');
event.start = moment('2015-07-01');
event.end = moment('2015-07-01').add(duration, 'd');
}
}
})
一些解释:
- 我必须计算原始持续时间,因为当我更改开始日期,Fullcalendar假定结束日期相同并发生更改事件持续时间。所以它迫使我指定一个新的结局日期(有其他方法吗?(
- 为event.start指定一个新日期效果良好
- 为event.end指定一个新日期。end总是返回:
类型错误:Va.time未定义
我是遗漏了什么,还是把事情搞得过于复杂了?这个错误是错误吗?
提前感谢你在这方面对我的帮助!
只需像这样修改现有的moment
:
eventDrop: function (event) {
event.start.day(1); //Move the startdate to day 1 (Monday, 0 = Sunday)
event.end.day(1); //Also move the enddate to Monday
}
jsFiddle
我不确定是什么原因导致了这个错误。这似乎与在event.start
或event.end
中设置一个新的momentjs对象有关。