其实在fullcalendar2中已经有现成的代码了,但是因为我用的是1,所以借鉴网上的一些代码加了自己的处理。可能写的比较恶心!

function isOverlapping(event){
var array=calendar.fullCalendar('clientEvents');
var start=Date.parse(event.start);
if(event.end==null){
var end=start+defaultEventMinutes*60*1000;
}else{
var end=Date.parse(event.end);
}
for(i in array){
if(array[i]._id!=event._id){
var currentStart=Date.parse(array[i].start);
if(array[i].end==null){
var currentEnd=currentStart+defaultEventMinutes*60*1000;
}else{
var currentEnd=Date.parse(array[i].end);
}
/**
* 对应的事件的起始时间>当前事件的结束时间
*/
//if(!(array[i].start >= event.end || array[i].end <= event.start )){
console.log("start :"+start);
console.log("current start :"+currentStart);
console.log("end :"+end);
console.log("current End :"+currentEnd);
if(start>currentStart&&start<currentEnd){//
console.log('开始时间在其他日程之间');
return true;
}
if(end>currentStart&&end<currentEnd){//
console.log('结束时间在其他日程之间');
return true;
}
if(start==currentStart||end==currentEnd){
console.log('//开始时间或者结束时间等于别人的时间');
return true;
}
if(start<currentStart&&end>currentStart){
console.log('其他日程在当前的日期中间');
return true;
}
}
}
return false;
}
其中:defaultEventMinutes 默认应该是等于fullcalendar中的120的,但由于不是每个人都将默认日程设置为120分钟,所以加了个变量自定义一下。

只要不是120,还需要设置一下:fullcalendar({defaultEventMinutes:defaultEventMinutes});

在使用的时候,有3个事件需要用到它,eventDrop,eventResize,drop。drop是指将外部的日程(或者颜色)拖放到日历上。eventDrop,eventResize都是针对指定日程的。

//用的时候就比较简单
if(isOverLapping(event)){
alert('日程安排有冲突');
revertFunc(); //这个方法只有在 eventDrop,eventResize中才有,
return ;
}
至此,处理日程安排重复算是搞定。折腾了一天,网上的那个是直接比较对象。不能用==,好尴尬,所以就采用时间戳了