【发布时间】:2019-09-28 20:38:48
【问题描述】:
有人知道为什么这些“allday=false”事件的结束日期为空吗?
小提琴样本:https://jsfiddle.net/L1g0z3jd/
我实例化它与开始日期不同,它在日历视图中显示得很好,但由于某种原因,每当我得到 clientEvents 时我都无法理解,即使我没有更改它,我在事件中得到了一个 null结束日期!
PS:为了“良心”,我必须添加...我正在使用旧版本的谷歌浏览器(v 57.0.2987.133 64 位)和旧的 ubuntu 版本(Linux Mint 18.1 Serena)
这让我发疯了!谢谢!
HTML 代码:
<button onclick="javascript:getEvents()">Get Events</button>
<div id='calendar'></div>
Javascript 代码:
$(function() {
$('#calendar').fullCalendar({
header: false,
allDaySlot: false,
visibleRange: {start: moment('2000-01-02'), end: moment('2000-01-09')},
editable: true,
selectable: true,
views: {
settimana: {
type: 'agenda',
columnFormat: 'ddd',
hiddenDays: []
}
},
defaultView: 'settimana',
defaultDate: $.fullCalendar.moment().startOf('week'),
slotMinutes: 30,
events: [
$.fn.getAgendaWorktime(1, "08:00:00", 60),
$.fn.getAgendaWorktime(2, "08:30:00", 120),
],
select: function(startDate, endDate) {
$('#calendar').fullCalendar('renderEvent', {
title: 'free time',
start: startDate.format(),
end: endDate.format(),
allDay: false
});
},
eventClick: function(calEvent, jsEvent, view) {
console.log(calEvent, jsEvent, view);
if(doubleClick==calEvent._id){
if (confirm('Delete it?')) {
$('#calendar').fullCalendar('removeEvents',calEvent._id);
}
doubleClick = null;
}else{
doubleClick=calEvent._id;
}
},
});
});
function getEvents() {
var e=0,err=false,$data = []
$('#calendar').fullCalendar('clientEvents').forEach(periodo => {
if (periodo.end==null || periodo.start.format().substr(0,10)!=periodo.end.format().substr(0,10)) {
if (e==0) {
err = true;
e++;
alert('Event startint at '+periodo.start.format()+' cant spread to multiple days');
}
} else {
$data.push({'ini': periodo.start.format(), 'fim': periodo.end.format()});
}
});
alert($data);
}
jQuery.fn.getAgendaWorktime = function ($dow, $start, $elapsed) {
var r = {
allDay: false,
title: 'free time',
start: new Date('2000-01-02 '+$start),
end: new Date('2000-01-02 '+$start)
};
r.start.setDate(r.start.getDate()+$dow);
r.end.setDate(r.end.getDate()+$dow);
r.end.setHours(r.end.setHours()+($elapsed*60));
return(r);
}
【问题讨论】:
-
PS:每当单击“获取事件”按钮时,它应该在第二个警报中显示除空“字符串”之外的其他内容!它应该显示一个包含两个项目的数组,而不是因为“periodo.end”属性始终为空!
-
因为您设置结束日期的公式产生的值无效。见jsfiddle.net/96278dgu
-
是的,我发现并在下面的答案中更好地解释了这一点。感谢您的帮助@ADyson
标签: javascript jquery google-chrome fullcalendar fullcalendar-3