我已经看到有人要求在日历中添加MORE链接并限制事件数量。这样做了吗?或者有没有人实施自己的工作,他们可以共享?如果是这样,请发布您的代码。
答案 0 :(得分:7)
使用新版本v2.1.0-beta2发布17天前 Arshaw 执行以下操作
已解决的问题:
- 带有“更多...”链接的最大事件(304)
- 在拖动/调整大小(1297)
时不要触发eventMouseover / eventMouseout新选项:
- 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)
});
答案 1 :(得分:6)
我最近写了一个插件,完全符合您的要求。希望fullcalendar的开发人员Adam Shaw将链接到它或将此增强插件包含在fullcalendar核心中。
检查一下,让我知道你的想法。请报告任何错误。 https://github.com/lyconic/fullcalendar.viewmore
由于
答案 2 :(得分:1)
我在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 = $('<div class="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;
}
答案 3 :(得分:0)
fullcalendar google code page上显示此功能的开放式“增强”票证。如果您“明星”该问题,您将收到有关该功能的任何更新的通知。
此外,在那个帖子中有人发布了尝试解决方案。我自己没试过,但值得一看。查看该特定评论here。
答案 4 :(得分:0)
如果有其他人遇到同样的问题,请阅读:
如果使用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个事件