FullCalendar检查选择日是否有事件?

时间:2014-02-27 11:35:44

标签: javascript jquery fullcalendar

我正在使用Full Calender js插件,到目前为止一直很好。但我想检查开始和结束之间的选择是否有事件?

我只需要返回true或false。基本上我想阻止用户在日期选择中已经存在甚至已经存在的情况下创建事件。

var calendar = $('#calendar').fullCalendar({

    selectable: true,
    selectHelper: true,
    firstDay: 5,
    weekNumbers: false,
    select: function (start, end, allDay, event) {
        var TitleSet = false;
        StartDate = start;
        EndDate = end;
        if (event) {}
        if (TitleSet) {
            calendar.fullCalendar('renderEvent', {
                title: title,
                start: start,
                end: end,
                allDay: allDay
            },
            true // make the event "stick"
            );
        }
        calendar.fullCalendar('unselect');

    },
    editable: true,
    events: EventsArr,
    eventRender: function (event, element) {
        element.qtip({
            content: event.description
        });
    }
});

2 个答案:

答案 0 :(得分:4)

我尝试了这种方法,它看起来很好

    // check if this day has an event before
    function IsDateHasEvent(date) {
        var allEvents = [];
        allEvents = $('#calendar').fullCalendar('clientEvents');
        var event = $.grep(allEvents, function (v) {
            return +v.start === +date;
        });
        return event.length > 0;
    }

然后您可以从 dayclick 事件

中调用它
    dayClick: function (date, allDay, jsEvent, view) {

        if (!IsDateHasEvent(date)) {
            selectedDate = date;
            $("#divAddNewAppointment").dialog("open");
        }
        else {
            $('<%= "#" + lblMessage.ClientID%>').html(" your error msg");
            $("#divMessage").dialog("open");
        }
    }

答案 1 :(得分:0)

您需要创建一个方法来获取已在日历中加载的事件数组,然后使用该数组获取具有事件的所有日期,如果用户点击其中一个日期,则不要创建另一个事件。这是你只能制造和弄清楚的东西,你需要为自己制作一个算法...

选中此clientEvents