Jquery 如何检查全天日历中已存在的事件

Jquery 如何检查全天日历中已存在的事件,jquery,fullcalendar,Jquery,Fullcalendar,如何在使用renderEvent方法时检查事件已存在一天 我发现dayClick和客户可能会在堆栈中找到答案,我不确定它是如何用于渲染的 我的解决方案是比较EventObject的.start 更新:经过讨论,似乎我们之前有相反的理解,我更新了我的代码 因此,我的解决方案的条件是: var allevents = $inlineCalendar.fullCalendar( 'clientEvents'); for(var i=0;i<allevents.length;i++ ){ var

如何在使用renderEvent方法时检查事件已存在一天

我发现dayClick和客户可能会在堆栈中找到答案,我不确定它是如何用于渲染的


我的解决方案是比较EventObject的.start

更新:经过讨论,似乎我们之前有相反的理解,我更新了我的代码

因此,我的解决方案的条件是:

var allevents = $inlineCalendar.fullCalendar( 'clientEvents');

for(var i=0;i<allevents.length;i++ ){
var currentevent=allevents[i];
if((
(copiedEventObject.allDay && copiedEventObject.start == currentevent.start) 
|| HasSameDate(currentevent.start,copiedEventObject.start)
) == false){
    $inlineCalendar.fullCalendar('renderEvent', copiedEventObject, true);                       
}
}

function HasSameDate(date1,date2)
{
   return $inlineCalendar.fullCalendar.formatDate(date1, 'yyyyMMdd') == $inlineCalendar.fullCalendar.formatDate(date2, 'yyyyMMdd');
}

不幸的是,上述答案在我的场景中不起作用。所以我用自己的方式找到了一个解决方案。也许它会帮助某人,但不确定这是一种正确的方式

var allevents = $inlineCalendar.fullCalendar('clientEvents');
                var arrAlleventsDate = [];

                for(i in allevents){
                    if(arrAlleventsDate.indexOf($.fullCalendar.formatDate(allevents[i].start, 'yyyyMMdd')) == -1){
                        arrAlleventsDate.push($.fullCalendar.formatDate(allevents[i].start, 'yyyyMMdd'));
                    }
                }
if(arrAlleventsDate.indexOf($.fullCalendar.formatDate(newDay, 'yyyyMMdd')) == -1){
                        $inlineCalendar.fullCalendar('renderEvent', copiedEventObject, true); 
                    }

如果您希望为每个事件工作,请添加事件id作为日期前缀。

在议程视图中,我签入选择在所选期间是否有其他事件;支票上有限制编号、字段es:标题或自定义字段以及时间段:

 select: function(start, end, jsEvent) {
   var maxEvent = 2;
   var allEvents = $('#calendar').fullCalendar( 'clientEvents');
   var xst = moment(start);
   var xen = moment(end);
   var eventsCount = 0;
   var collideEvent;
   var tempField;
   for(var i=0;i<allEvents.length;i++ ) {
     var currentEvent=allEvents[i];
     if(xst.isBetween(currentevent.start,currentevent.end,null, '[)') || 
        xen.isBetween(currentevent.start,currentevent.end,null, '(]')) {
         eventsCount++;
         if(eventsCount>=maxEvent && tempField != currentEvent.field) {
           alert("!");
           $('#calendar').fullCalendar('unselect');
           return false;
           break;
         }
         collideEvent = currentEvent;
         tempField = collideEvent.field;                                
      }
   //proceed!
}

谢谢你的快速重播,我会很快测试你的答案,如果它对我来说是可以接受的。目前它对我不起作用,总是调用else case,我正在检查我这边是否有任何错误,你也可以指定我你的意思currentevent.Start我已经试用了你的更新代码,但它总是得到else case。太有趣了!它在我这边起作用。似乎我的答案有5票,不确定是否在他们这边工作。顺便问一下,你这边有什么错误?它总是得到其他情况,并发现条件结果如下:2014年5月14日星期三00:00:00 GMT+0530印度标准时间:未定义:错误。这意味着currentevent.start未定义。任何人都有这个问题的答案。。。???
var allevents = $inlineCalendar.fullCalendar('clientEvents');
                var arrAlleventsDate = [];

                for(i in allevents){
                    if(arrAlleventsDate.indexOf($.fullCalendar.formatDate(allevents[i].start, 'yyyyMMdd')) == -1){
                        arrAlleventsDate.push($.fullCalendar.formatDate(allevents[i].start, 'yyyyMMdd'));
                    }
                }
if(arrAlleventsDate.indexOf($.fullCalendar.formatDate(newDay, 'yyyyMMdd')) == -1){
                        $inlineCalendar.fullCalendar('renderEvent', copiedEventObject, true); 
                    }
 select: function(start, end, jsEvent) {
   var maxEvent = 2;
   var allEvents = $('#calendar').fullCalendar( 'clientEvents');
   var xst = moment(start);
   var xen = moment(end);
   var eventsCount = 0;
   var collideEvent;
   var tempField;
   for(var i=0;i<allEvents.length;i++ ) {
     var currentEvent=allEvents[i];
     if(xst.isBetween(currentevent.start,currentevent.end,null, '[)') || 
        xen.isBetween(currentevent.start,currentevent.end,null, '(]')) {
         eventsCount++;
         if(eventsCount>=maxEvent && tempField != currentEvent.field) {
           alert("!");
           $('#calendar').fullCalendar('unselect');
           return false;
           break;
         }
         collideEvent = currentEvent;
         tempField = collideEvent.field;                                
      }
   //proceed!
}