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 结果。
如何防止用户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 结果。