其实在fullcalendar2中已经有现成的代码了,但是因为我用的是1,所以借鉴网上的一些代码加了自己的处理。可能写的比较恶心!
JavaScript代码
- 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;
- }
只要不是120,还需要设置一下:fullcalendar({defaultEventMinutes:defaultEventMinutes});
在使用的时候,有3个事件需要用到它,eventDrop,eventResize,drop。drop是指将外部的日程(或者颜色)拖放到日历上。eventDrop,eventResize都是针对指定日程的。
JavaScript代码
- //用的时候就比较简单
- if(isOverLapping(event)){
- alert('日程安排有冲突');
- revertFunc(); //这个方法只有在 eventDrop,eventResize中才有,
- return ;
- }