JS Fullcalendar如何禁用allDay事件?

时间:2014-09-04 05:54:58

标签: javascript jquery fullcalendar

我不希望用户能够在我的日历中创建allDay事件。我希望日历通过单击日期将视图从月视图更改为agendaDay视图,但每次单击日期日历时,都会将视图更改为agendaDay,但它会尝试创建allDay事件。

$('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
    dayClick: function(date,allDay, jsEvent, view) {
        if (allDay) {
            // Clicked on the entire day
            $('#calendar').fullCalendar('gotoDate',date)
            $('#calendar').fullCalendar('changeView', 'agendaDay')
        }
        view = $('#calendar').fullCalendar('getView');
    },
    selectable: function(){
        if(view.name=='agendaDay'  ){
            return true;  
        }else{
            return false;
        }
    }, 
    selectHelper: true,
    select: function(start, end) {
        var title = prompt('Event Title:');
        var eventData;
        if (title) {
            eventData = {
                title: title,
                start: start,
                end: end,
            };
            $('#calendar').fullCalendar('renderEvent', eventData, true);
        }
        $('#calendar').fullCalendar('unselect');
    }
});

1 个答案:

答案 0 :(得分:2)

您正在处理dayClickselectableselect;而这只能通过处理select

来实现
 select: function(start, end, jsEvent, view) {
    if (view.name=='month') {
        $('#calendar').fullCalendar('changeView', 'agendaDay');
        $('#calendar').fullCalendar('gotoDate', start)
    } else {
        var title = prompt('Event Title:');
        var eventData;
        if (title) {
            eventData = {
                title: title,
                start: start,
                end: end
            };
            $('#calendar').fullCalendar('renderEvent', eventData, true);
        }
    }
    $('#calendar').fullCalendar('unselect');
}

使用FullCalendar v2.1.1查看http://jsfiddle.net/wijgerden/t81qtupz/的JSFiddle演示;请注意,这仍然允许用户在agendaWeekagendaDay视图上创建全天活动。在month视图中选择日期会将视图切换为agendaDay(多选时的第一天),同时仍允许点击事件。