FullCalendar限制事件数量并具有更多链接

我已经看到有人要求在日历中添加MORE链接并限制事件数量。 这样做了吗? 或者有没有人实施自己的工作,他们可以共享? 如果是这样,请发布您的代码。

随着新版本v2.1.0-beta2发布17天前Arshaw做了以下事情

已解决的问题:

  • 带有“更多…”链接的最大事件(304)
  • 拖动/resize时不要触发eventMouseover / eventMouseout(1297)

新选择:

  • eventLimit
  • eventLimitClick
  • eventLimitText
  • dayPopoverFormat

资源

所以,你可以做到以下几点:

$('#calendar').fullCalendar({ lang: 'en', eventLimit: true, // If you set a number it will hide the itens eventLimitText: "Something" // Default is `more` (or "more" in the lang you pick in the option) }); 

最近写了一个插件,它完全符合你的要求。 希望fullcalendar的开发人员Adam Shaw将链接到它或将此增强插件包含在fullcalendar核心中。

看看它,让我知道你的想法。 请报告任何错误。 https://github.com/lyconic/fullcalendar.viewmore

谢谢

我在eventRender上处理这个问题。 代码是这样的, maxEvents是你想要设置最大值的东西, BuildMoreLink(currentMoreNum)构建你的链接。 返回false会阻止将项目添加到您的日历中。

  eventRender: function (event, element) { var eventDateString = GetDateInCalFormat(event.start); var $calDay = $('td.fc-day[data-date="' + eventDateString + '"]'); var dayEventCount = $calDay.attr('dayEventCount') ? parseInt($calDay.attr('dayEventCount')) : 0; dayEventCount = dayEventCount + 1; $calDay.attr('dayEventCount', dayEventCount); if (dayEventCount <= maxEvents) { //[any custom formatting] } else { var missingEvents = dayEventCount - maxEvents; $('.moreLink', $calDay).remove(); $moreLink = $('') $moreLink.html(BuildMoreLink(missingEvents)); $calDay.append($moreLink); return false; } } 

哦是的,这是我的格式化程序,用于获取正确的日期值来查找日期:

 function GetDateInCalFormat(dateToFormat) { dd = dateToFormat.getDate(); mm = dateToFormat.getMonth() + 1; yyyy = dateToFormat.getFullYear(); if (dd < 10) { dd = '0' + dd } if (mm < 10) { mm = '0' + mm } results = yyyy + '-' + mm + '-' + dd; return results; } 

看起来在fullcalendar Google代码页上有一个开放的“增强”票证用于此function。 如果您“明星”该问题,您将收到有关该function的任何更新的通知。

此外,在该线程中,有人发布了尝试解决方案。 我自己没试过,但值得一看。 在此处查看具体评论。

如果有其他人遇到同样的问题,请阅读:

如果PHP / MySQL用于从DB获取事件:

只需获取月份的开始日期戳和结束日期戳。

然后使用简单的for循环

  $allEvents = array(); for ($i = $start; $i <= $end; $i = strtotime("+ 1 day", $i)) { //need to have start and end dates to be the same day but end day must be at 23:59:59 $newStart = $i; $newEnd = strtotime("+ 23 hours 59 minutes 59 seconds", $newStart); $limit = 10; //load all events with limit whatever limit you wish and merge with all events $loadedEvents = loadEvents($newStart, $newEnd, $limit, $otheroptions); $allEvents = array_merge($allEvents, $loadedEvents); } 

然后你可以使用$allEvents数组来显示事件。 它对我有用,每天最多显示10个事件。