我在我的项目中使用 FullCalendar。我使用了后台事件,
rendering="background"
。如何检测用户是否点击了后台事件?我尝试了这个,但它不起作用,因为无法单击所有日期。
dayClick: function (start, end, allDay, jsEvent, view,color,calEvent) {
if (calevent.rendering==="background") {
alert('Click Background Event Area');
}
else{
$('#modal1').modal('show');
}
if (start.isBefore(moment())) {
$('#calendar').fullCalendar('unselect');
return false;
}
},
由于 fullCalendar 不会在后台事件上公开“点击”类型事件,因此我能想到的唯一方法本质上是 DIY 方法。基本思想:
我还没有测试过这个,但它是基于我发现的一些旧代码,所以希望你明白这个想法:
select: function(start, end, jsEvent, view) {
var cal = $("#calendar"); //put the ID of your calendar element here
var evts = cal.fullCalendar('clientEvents'); //get all in-memory events
var selectedEvent = null;
for (i in evts) {
if (evts[i].rendering == "background" && start.isBefore(evts[i].end) && end.isAfter(evts[i].start)) {
selectedEvent = evts[i];
}
}
}
唯一的缺陷是“选择”允许选择一个时间段,而不仅仅是单击一次,因此选择可能与背景事件“重叠”,而不是完全包含在其中。如果这不适合您,您可以稍微调整逻辑 - 例如要求开始和结束都在事件的边界内。