检测背景事件

时间:2017-02-27 04:31:00

标签: fullcalendar

我在我的项目中使用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;
            }
        },

1 个答案:

答案 0 :(得分:3)

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

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