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

基于jQuery fullCalendar实现按星期几显示价格并保留预订事件

实现FullCalendar日期单元格显示固定星期价格+保留预订事件

当然可以实现啦!这在FullCalendar里是个挺常见的自定义需求,我给你详细说说具体怎么弄,保证价格和预订事件能完美共存~

核心思路

利用FullCalendar的dayRender(或v3版本的同名回调)钩子,在每个日期单元格渲染完成后,插入对应星期的固定价格元素;同时保持原有事件的加载逻辑不变,这样就能同时展示价格和用户预订的事件了。

1. 定义星期与价格的映射关系

首先先把每周各天的价格整理成一个对象,方便后续调用:

// 0=周日,1=周一,以此类推到6=周六
const dayPriceMap = {
  0: '$700',
  1: '$600',
  2: '$700',
  3: '$600', // 可根据你的实际需求补充/修改
  4: '$600',
  5: '$700',
  6: '$700'
};

2. 配置FullCalendar的dayRender回调

根据你使用的FullCalendar版本,选择对应的写法:

版本v4/v5+(推荐)

document.addEventListener('DOMContentLoaded', function() {
  const calendarEl = document.getElementById('calendar');
  
  const calendar = new FullCalendar.Calendar(calendarEl, {
    initialView: 'timeGridWeek', // 换成你需要的视图,比如dayGridMonth
    events: '/your-events-api', // 这里填你的预订事件数据源地址
    dayRender: function(info) {
      // 获取当前日期的星期数
      const dayOfWeek = info.date.getDay();
      // 创建价格显示元素
      const priceElement = document.createElement('div');
      priceElement.className = 'calendar-day-price';
      priceElement.textContent = dayPriceMap[dayOfWeek];
      // 将价格元素添加到单元格中
      info.dayEl.appendChild(priceElement);
    }
  });

  calendar.render();
});

版本v3(旧版兼容)

$(document).ready(function() {
  $('#calendar').fullCalendar({
    defaultView: 'agendaWeek',
    events: '/your-events-api',
    dayRender: function(date, cell) {
      // v3中date是moment对象,用day()获取星期数
      const dayOfWeek = date.day();
      const price = dayPriceMap[dayOfWeek];
      // 插入价格元素
      cell.append('<div class="calendar-day-price">' + price + '</div>');
    }
  });
});

3. 添加CSS样式调整展示位置

为了让价格不遮挡预订事件,我们可以给价格元素设置定位,放在单元格的角落:

.calendar-day-price {
  position: absolute;
  top: 4px;
  right: 4px;
  font-weight: 600;
  color: #2d3748;
  background-color: rgba(255, 255, 255, 0.9);
  padding: 2px 6px;
  border-radius: 4px;
  font-size: 14px;
}

/* 如果是月视图,可调整字体大小适配单元格 */
.fc-dayGridMonth-view .calendar-day-price {
  font-size: 12px;
}

效果说明

这样配置后,每个日期单元格会根据对应的星期显示固定价格,而用户的预订事件会正常渲染在单元格内,不会被价格元素遮挡——价格会固定在单元格的角落,和事件内容互不干扰,完全符合你的需求~

内容的提问来源于stack exchange,提问作者Ghada Rahhal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:44:05