如何配置完整日历以仅显示几天。因为我想让用户在一些可用的日子里创建自己的活动。
1 回答
不确定我是否完全理解这个问题。是否要隐藏特定的工作日?或者您想限制用户仅在一个月内的特定日期创建活动?
如果您想隐藏特定的工作日,您可以使用“hiddenDays”属性轻松做到这一点,如下所述:http: //arshaw.com/fullcalendar/docs/display/hiddenDays/
如果您想要隐藏一个月内的特定日期,我认为没有规定可以这样做。但是,您可以改为使用“dayClick”函数来检查单击的日期是否是您希望用户创建事件的日期,如果是,请从那里继续,否则让用户知道无法在该特定日期创建事件. dayClick 文档位于:http ://arshaw.com/fullcalendar/docs/mouse/dayClick/
您还可以使用“dayRender”在渲染一天时获取回调(它被渲染为每个日期带有“td”标签的表格单元格),以便您可以添加一个 CSS 类(例如“禁用”用于日期不允许创建事件)到日历的特定单元格检查日期后,以便让用户知道是否可以在该特定日期创建事件。可以在此处找到相关文档:http: //arshaw.com/fullcalendar/docs/display/dayRender/
编辑——(在 OP 评论后编辑...)
根据您的评论,我认为情况相当棘手。正如您正确提到的,agendaWeek 没有“dayRender”回调。我能想到的唯一选择是拼凑一个相当肮脏的黑客。据我所知,agendaWeek 的结构(对于最新的完整日历版本)如下所示:
<table class="fc-agenda-days fc-border-separate">
<thead>
<tr class="fc-first fc-last">
<th class="fc-agenda-axis fc-widget-header fc-first"> </th>
<th class="fc-sun fc-col0 fc-widget-header">Sun 8/11</th>
<th class="fc-mon fc-col1 fc-widget-header">Mon 8/12</th>
<th class="fc-mon fc-col2 fc-widget-header">Tue 8/13</th>
...
</tr>
</thead>
<tbody>
<tr class="fc-first fc-last">
<th class="fc-agenda-axis fc-widget-header fc-first"> </th>
<td class="fc-col0 fc-sun fc-widget-content fc-past">...</td>
<td class="fc-col1 fc-mon fc-widget-content fc-past">...</td>
<td class="fc-col2 fc-tue fc-widget-content fc-past">...</td>
....
</tr>
</tbody>
</table>
如果您可以以某种方式解析 $("table.fc-agenda-days th.fc-col*") 中的日期以及您想要禁用的日期,请将 CSS 类添加到 $("table.fc-agenda-days td .fc-col*") 设置一个新的背景,你应该很高兴。这当然是除了处理 'dayClick' 回调。
这可以在“viewRender”回调中完成(在检查视图类型是否为议程周之后)。希望这能将您推向正确的方向...如果您卡在某个地方,请告诉我...