检测后台事件

问题描述 投票:0回答:1

我在我的项目中使用 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;
            }
        },
javascript jquery fullcalendar fullcalendar-3
1个回答
4
投票

由于 fullCalendar 不会在后台事件上公开“点击”类型事件,因此我能想到的唯一方法本质上是 DIY 方法。基本思想:

  • 处理“选择”事件
  • 使用“clientEvents”方法获取当前 fullCalenar 内存中的所有事件。
  • 循环遍历所有事件,检查是否有后台事件,如果是,是否与所选时间段重叠。如果他们这样做了,那么这就是被点击的事件。

我还没有测试过这个,但它是基于我发现的一些旧代码,所以希望你明白这个想法:

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];
        }
    }
}

唯一的缺陷是“选择”允许选择一个时间段,而不仅仅是单击一次,因此选择可能与背景事件“重叠”,而不是完全包含在其中。如果这不适合您,您可以稍微调整逻辑 - 例如要求开始和结束都在事件的边界内。

© www.soinside.com 2019 - 2024. All rights reserved.