You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FullCalendar v5月视图异常:跨天事件未达上限却显示+more

解决方法

要让非起始日的跨天事件也能被纳入每天的dayMaxEvents显示数量,核心是调整事件排序规则,避免跨天事件的非起始日实例被挤到排序列表末尾导致被截断。

1. 自定义事件排序逻辑

通过eventSort回调,在保留eventType排序优先级的基础上,调整同一eventType下的排序规则,让跨天事件有机会进入前dayMaxEvents个显示位置。

示例代码:

document.addEventListener('DOMContentLoaded', function() {
  const calendarEl = document.getElementById('calendar');
  const calendar = new FullCalendar.Calendar(calendarEl, {
    initialView: 'dayGridMonth',
    dayMaxEvents: 3,
    eventSort: function(a, b) {
      // 优先按eventType排序
      const typeA = a.extendedProps.eventType;
      const typeB = b.extendedProps.eventType;
      if (typeA !== typeB) {
        return typeA < typeB ? -1 : 1;
      }
      // 同一eventType下,按事件结束日期倒序,跨天事件结束日期更晚,会排在前面
      return b.end.getTime() - a.end.getTime();
    },
    events: [
      // 示例事件数据
      {
        title: '起始日事件1',
        start: '2024-04-01',
        end: '2024-04-01',
        extendedProps: { eventType: 1 }
      },
      {
        title: '跨天事件1',
        start: '2024-03-31',
        end: '2024-04-02',
        extendedProps: { eventType: 1 }
      }
    ]
  });
  calendar.render();
});

2. 简化版:调整eventOrder字段

如果不需要复杂的函数排序,也可以通过eventOrder字符串配置直接指定排序规则:

eventOrder: 'eventType, -end'

这会先按eventType升序排序,再按end日期降序排序,让跨天事件在同一eventType下优先显示。

原理说明

默认情况下,FullCalendar按事件的start日期排序,导致跨天事件的非起始日实例排在所有当日起始事件的后面。通过调整排序规则,让跨天事件在同一eventType下提前,就能确保它们有机会被纳入每天的前3个显示名额,避免出现“显示数量不足却有+more”的问题。

内容的提问来源于stack exchange,提问作者Deema Bataineh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:20:39