FullCalendar.js: Empêcher des sélections autres que des événements en arrière-plan?

Comment empêcher l’utilisateur de sélectionner des zones non colorées (événements en arrière-plan). Il ne devrait pouvoir sélectionner que les zones de couleur bleue.

entrez la description de l'image ici

Jusqu’à ce que cette demande que j’ai faite il y a un peu soit terminée, la meilleure solution est la suivante:

Utilisez la fonction suivante pour vérifier si un événement est “à l’intérieur” d’un événement en arrière-plan.

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; }; 

Dans chaque rappel de création ou de modification d’événement, utilisez la fonction.

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

Voici un JSFiddle du résultat.