FullCalendar.js:阻止除背景事件之外的选择?

FullCalendar.js: Preventing selections other than on background events?

如何防止用户select访问非彩色区域(背景事件)。他应该只能select蓝色区域。

直到我刚才的this请求完成,最好的解决办法是:

使用以下函数检查事件是否是背景事件的"inside"。

var isValidEvent = function(start,end){
    return $("#calendar").fullCalendar('clientEvents', function (event) {
        return (event.rendering === "background" && //Add more conditions here if you only want to check against certain events
                (start.isAfter(event.start) || start.isSame(event.start,'minute')) &&
                (end.isBefore(event.end) || end.isSame(event.end,'minute')));
    }).length > 0;
};

在每个事件创建或修改回调中,使用函数。

select: function (start, end, jsEvent, view) {
    if(isValidEvent(start,end)){ //only add it if it's valid
        $("#calendar").fullCalendar('addEventSource', [{
            start: start,
            end: end,
        } ]);
    }        
    $("#calendar").fullCalendar("unselect");
},
eventDrop: function( event, delta, revertFunc, jsEvent, ui, view ) {
    if(!isValidEvent(event.start,event.end)){
        revertFunc();
    }
},
eventResize: function( event, delta, revertFunc, jsEvent, ui, view ) {
    if(!isValidEvent(event.start,event.end)){
        revertFunc();
    }
},

这是 JSFiddle 结果。