在我的日历上,用户可以选择一段时间并创建新活动。 但是:由于select函数没有通过当前事件,我需要在创建后立即点击当前事件上的jsEvent。
我的问题: 我怎样才能找出我刚刚创建的哪个事件?
到目前为止,我尝试renderEvent
和eventAfterRender
,但第一个没有给我任何DOM元素,我可以附加我的点击事件,第二个返回所有渲染事件的列表在我的日历中!
events: [
{
title: "80$",
start: "01-11-2016",
end: "10-11-2016"
}
],
editable: true,
eventOverlap: false,
selectable: true,
selectHelper: true,
selectOverlap: false,
select: function(start, end, jsEvent) {
var check = start._d.toJSON().slice(0,10);
var today = new Date().toJSON().slice(0,10);
if(check > today ){
list.eventUpdated = {
title: title,
start: start,
end: end"
};
$(cal).fullCalendar('addEventSource', {
events: [list.eventUpdated]
});
$('#calendar').fullCalendar('unselect');
}
},
eventAfterRender: function (event, element, view) {
console.log(event); // give all events in my cal
// my goal is do something like:
// event.click();
},
eventClick: function(event, jsEvent) {
// do stuff with datepicker
}
我看到了这个类似的主题,但到目前为止我无法复制它:/ Trigger once after event created using fullcalendar.io
答案 0 :(得分:1)
您可以将自定义属性设置为新事件对象,然后再将其设置为“嘿,这是来自选择操作”。在您的eventRender回调中,检查该set属性。 eventRender为您提供事件和DOM对象。
$(document).ready(function() {
$('#calendar').fullCalendar({
...
...
select: function (start, end) {
var title = prompt('Event Title:');
var eventData;
if (title) {
eventData = {
title: title,
start: start,
end: end,
fromSelect: true
};
$('#calendar').fullCalendar('renderEvent', eventData, true);
}
$('#calendar').fullCalendar('unselect');
},
eventAfterRender: function(event, element){
if(event.fromSelect){
//Now you have the event and the DOM element
event.fromSelect = false; //(as to not trigger on rerender)
element.click();
}
},
eventClick: function(event, element){
console.log(event);
//do something here
},
...
...
});
});