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.
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.