我正在使用FullCalendar UI来显示数据库中表格的日历事件。
我遇到的问题是,当我的事件持续时间不到1小时时,该事件的主题将不可行。我附上了一个屏幕截图,向您展示当前的显示方式。
在观看第一个活动" IT Meeting"它看起来没有问题。另一方面,下一个事件(即从下午5:24 - 下午6:00开始)主题是不可读的。如何或如何才能使主题可行,以便用户知道他/她已安排的内容?
谢谢
答案 0 :(得分:1)
为了解决这个问题,我使用了http://qtip2.com/。 (对于早期版本的fullcalendar)
http://jsfiddle.net/marcrazyness/cjn4vxbm/
$(document).ready(function () {
$('#myCalendar').fullCalendar({
events: [
{
title: 'event',
start: '2014-10-01',
description: 'My Event Description',
allDay: true
}
],
eventRender: function(event, element) {
// Here using qtip to set hover message.
element.qtip({
content: event.description,
// Position (optional)
position: {
my: 'center center',
at: 'center center',
target: $(element)
}
});
}
});
});
EDIT!来自Mike的@MikeSmithDev回复,fullcalendar 2.1.1的最新版本为您处理:
答案 1 :(得分:1)
从您的评论"有没有一种方法可以将标题放在出现溢出的时间旁边?"
是。假设您至少使用了FullCalendar 2.1.1,则时间将放在具有类.fc-time
的div中,并且标题的类为.fc-title
。因此,最简单的解决方法就是添加更新的样式:
.fc-time {display:inline-block !important;}
.fc-title {display: inline-block !important;}
现在让我们说你不想那样,因为它太容易了,你需要用它做更多的操作。所以,让我们用CSS隐藏标题,然后把它塞进那里:
将CSS更改为.fc-title {display: none;}
现在让我们更改eventRender
eventRender: function (event, element) {
var title = '<span class="someCoolClass"> ' + event.title + "</span>";
element.find('.fc-time').html(moment(event.start).format('h:mm') +" going until " + moment(event.end).format('h:mm') + title);
}
所以这有点过分,但它显示了对时间/标题的一些激烈操纵。如果您有兴趣,我还可以通过在boostrap模式或jQuery UI对话框中添加更多信息来完成类似的事情。
但这并没有回答你的另一个问题,那就是当出现溢出时只会这样做。只有在30分钟或更短的时间内才这样做?所以将上面的eventRender
更改为:
eventRender: function (event, element) {
var timeSpan = event.end - event.start;
var delim = "<br>"; /*break between time and title*/
if (timeSpan <= 1800000) { /*30 min or less! Replace the break with a colon*/
delim = ": ";
}
element.find('.fc-time').html(moment(event.start).format('h:mm') +" - " + moment(event.end).format('h:mm') + delim + event.title );
}
虽然我告诫我在旧版本的FullCalendar上使用了eventRender,但是在2.1.1上进行测试时,它似乎没有必要,因为它正在适当地调整显示。 所以,它可能就像升级一样简单。如果没有,你可以使用eventRender函数(虽然在旧版本中我认为它是一个不同的类,如fc-event-time或其他东西)。
答案 2 :(得分:1)
仍然使用eventRender
回调(作为MarCrazyness suggested),您可以随意更改html bloc:
eventRender: function(event, element) {
// event is the javascript object
// element is the html bloc, which already contains
// the time section, the body section etc...
if (event.end - event.start < 1hour ) { //<- write the real code to check if this is less than an hour
$(element).find('.fc-title').html('');
$(element).find('.fc-time').append(event.title);
}
}
答案 3 :(得分:1)
您的问题与日历的样式有关。因此,改变功能中的任何内容都没有意义(使用JS)。
我建议使用以下CSS代码:
.fc-view.fc-agendaDay-view.fc-agenda-view .fc-time-grid-event.fc-event .fc-content .fc-time {display:inline-block;}
.fc-view.fc-agendaDay-view.fc-agenda-view .fc-time-grid-event.fc-event .fc-content .fc-title {display:inline-block; margin-left:7px;}
活动的标题将写在时间段旁边。
功能上没有任何内容。
请记住,在加载此插件的初始CSS代码后,您需要编写此CSS代码,否则,您必须使用“!important”来覆盖原始代码。
答案 4 :(得分:0)
我下载了新版本的fullcalendar 2.1.1,解决了这个问题。
我想我使用的版本有一个错误。