使用renderEvent
方法时,如何检查事件已存在一天。
我发现可以使用dayClick
以clientEvents
的堆叠方式回答,我不确定它如何用于renderEvent
。
var diffDay = 5;
for (var i = 0; i < diffDay; i++) {
var copiedEventObject = $.extend({}, originalEventObject);
var newDay = new Date(event.start);
copiedEventObject.start = newDay;
$inlineCalendar.fullCalendar('renderEvent', copiedEventObject, true);
}
我正在寻找下面的条件或任何其他解决方案
if(....Condition?....){
$inlineCalendar.fullCalendar('renderEvent', copiedEventObject, true);
}
答案 0 :(得分:0)
我的解决方案是比较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');
}
答案 1 :(得分:0)
不幸的是,上面的答案在我的方案中不起作用。所以我从自己的方式找到了一个解决方案。可能它会帮助某人,但不确定它是否正确。
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作为日期的前缀。
答案 2 :(得分:0)
In agenda-view, I check in "select" if there are others event in the selected period; the cheks is on limit number, a field (es: title or custom field) and time period:
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!
}