我使用FullCalendar生成一些事件。我想重新排列标题中的按钮。
例如,月,周和日按钮应显示在第一行。标题应放在prev和next按钮之间。怎么做到这一点?
提前致谢。
$('#calendar').fullCalendar({
header: {
left: 'prev',
center: 'title',
right : 'next'
},
titleFormat: {
month: 'MMMM yyyy',
week: 'MMMM yyyy',
day: 'MMMM yyyy'
},
contentHeight: 300,
height: 200 ,
eventRender: function(event, element) {
element.popover({
title: event.title1,
placement: 'auto',
html: true,
trigger: 'click',
animation:'true',
content: event.msg,
container: 'body'
});
$('body').on('click', function(e) {
if (!element.is(e.target) && element.has(e.target).length === 0 && $('.popover').has(e.target).length === 0)
element.popover('hide');
});
},
events: eventData
});
答案 0 :(得分:3)
FullCalendar中没有可用的方法提供您所需的方法。
但是,您可以手动添加。在下面的代码中,我添加了在FullCalendar初始化之后调用的函数addButtons
和bindButtonActions
。第一个函数创建按钮所需的DOM,并将生成的内容附加到FullCalendar标头。
第二种方法将click
操作绑定到按钮(即,当您单击Week时,将调用changeView方法。)
另一种选择是更改FullCalendar的源代码,但我不同意这个选项,因为更新插件会更加困难。
这是working jsfiddle和代码。
<div id="calendar"></div>
<script>
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev',
center: 'title',
right : 'next'
},
titleFormat: {
month: 'MMMM YYYY',
week: 'MMMM YYYY',
day: 'MMMM YYYY'
},
contentHeight: 300,
height: 200,
eventRender: function(event, element) {
element.popover({
title: event.title1,
placement: 'auto',
html: true,
trigger: 'click',
animation:'true',
content: event.msg,
container: 'body'
});
$('body').on('click', function(e) {
if (!element.is(e.target) && element.has(e.target).length === 0 && $('.popover').has(e.target).length === 0)
element.popover('hide');
});
}
});
addButtons();
bindButtonActions();
function addButtons() {
// create buttons
var month = $("<span/>")
.addClass("fc-button fc-button-month fc-state-default fc-corner-left fc-state-active")
.attr({
unselectable: "on"
})
.text("moth");
var week = $("<span/>")
.addClass("fc-button fc-button-agendaWeek fc-state-default")
.attr({
unselectable: "on"
})
.text("week");
var day = $("<span/>")
.addClass("fc-button fc-button-agendaDay fc-state-default fc-corner-right")
.attr({
unselectable: "on"
})
.text("day");
// create tr with buttons.
// Please note, if you want the buttons to be placed at the center or right,
// you will have to append more <td> elements
var tr = $("<tr/>").append(
$("<td/>")
.addClass("fc-header-left")
.append(month)
.append(week)
.append(day)
);
// insert row before title.
$(".fc-header").find("tr:first").before(tr);
}
function bindButtonActions(){
var date = new Date();
// bind actions to buttons
$(".fc-button-month, .fc-button-agendaWeek, .fc-button-agendaDay").on('click', function() {
var view = "month";
if ($(this).hasClass("fc-button-agendaWeek")) {
view = "agendaWeek";
} else if ($(this).hasClass("fc-button-agendaDay")) {
view = "agendaDay";
}
$('#calendar').fullCalendar('changeView', view);
});
}
});
</script>
答案 1 :(得分:1)
使用fullcalendar 2.0.3
在完整日历的初始化中,您可以添加
header: {
left: 'prev,title,next today',
center: '',
right: 'month,agendaWeek,agendaDay'
},
在render()
中的完整calendar.js中function render() {
tm = options.theme ? 'ui' : 'fc';
var sections = options.header;
if (sections) {
element = $("<table class='fc-header' style='width:100%'/>")
.append($("<tr/>").append(renderSection('right')))
.append(
$("<tr/>")
.append(renderSection('left'))
).append(renderSection('center')
);
return element;
}
}
您可以根据需要自定义表格创建。
但正如@milz所说,编辑代码可能会在下一个完整日历版本中破坏您的更改。
答案 2 :(得分:0)
对于其他在这个问题上磕磕绊绊的人,在v2.4.0中,自定义按钮被添加到fullcalendar中:
https://fullcalendar.io/docs/display/customButtons/
$('#calendar').fullCalendar({
customButtons: {
myCustomButton: {
text: 'custom!',
click: function() {
alert('clicked the custom button!');
}
}
},
header: {
left: 'prev,next today myCustomButton',
center: 'title',
right: 'month,agendaWeek,agendaDay'
}
});