fullcalendar:找到刚创建的事件

时间:2016-01-15 17:59:05

标签: jquery fullcalendar

在我的日历上,用户可以选择一段时间并创建新活动。 但是:由于select函数没有通过当前事件,我需要在创建后立即点击当前事件上的jsEvent。

我的问题: 我怎样才能找出我刚刚创建的哪个事件?

到目前为止,我尝试renderEventeventAfterRender,但第一个没有给我任何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

1 个答案:

答案 0 :(得分:1)

您可以将自定义属性设置为新事件对象,然后再将其设置为“嘿,这是来自选择操作”。在您的eventRender回调中,检查该set属性。 eventRender为您提供事件和DOM对象。

Fiddle

$(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
        },
        ...
        ...
    });
});