当前位置: 首页 > 知识库问答 >
问题:

如何在完整的日历中重新排列表头中的按钮

汪天宇
2023-03-14

我已经使用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 
});

共有3个答案

西门马鲁
2023-03-14

对于其他遇到这个问题的人来说,在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'
    }
});
储毅
2023-03-14

使用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所说,编辑代码可能会破坏您在下一个完整日历版本中所做的更改。

关项明
2023-03-14

FullCalendar中没有提供所需内容的可用方法。

但是,您可以手动添加。在下面的代码中,我添加了函数AddButtonBindButtonActions,它们在FullCalendar初始化后调用。第一个函数创建按钮所需的DOM,并将生成的内容追加到FullCalendar头。

第二个方法将click操作绑定到按钮(也就是说,当您单击Week时,将有一个对changeView方法的调用)。

另一个选择是更改FullCalendar的源代码,但我不同意这个选择,因为更新插件会更加困难。

下面是一个工作的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>
 类似资料:
  • 我将angular2与angular2 fullcalendar一起使用。在我的项目中,我从后端获取数据。现在我的问题是,当我使用选择日期添加事件时,我希望它在日历上显示成功提交数据,而无需重新加载页面。以前我使用的是

  • 问题内容: 我有一张桌子: 可以通过管理员更改订单,因此可以更改订单列。在管理方面,我有一个带有选择框的表单,用于输入数据库。在插入的列之后,我应该使用哪种查询来对+1进行排序。 我想以使服务器负载最小的方式执行此操作,因为此表当前有1200行。这是保存表顺序的正确方法还是有更好的方法? 任何帮助表示赞赏 编辑: 这是我想要做的,这要归功于itsmatt: 想要将第1行重新排序为第1100行之后,

  • 问题内容: 如果我有列表,如何以任意方式重新排序商品? 编辑:我不想洗牌。我想以预定义的方式对它们进行重新排序。(例如,我知道旧列表中的第3个元素应成为新列表中的第一个元素) 问题答案: 你可以这样

  • 在python中是否可以按给定的索引重新排序列表? 如果我有列表: 我想按第二个索引重新排序,使其具有如下内容:

  • 我有这样一个情况: 我必须对进行排序,该列表还包含的ID,排序必须为: null

  • 问题内容: 我有一个这样的清单清单。 现在,我需要遍历上面的列表并输出一个字符串列表,如下所示(原始列表中没有数字) 问题答案: 准确执行您指定的操作的最简单解决方案是: 这基本上等效于迭代版本: 但是,这并不是遍历具有任意维数的多维列表的通用方法,因为嵌套列表推导/嵌套的for循环可能很难看。但是,对于2或3维列表,您应该放心。 如果您确实决定需要平整3个以上的尺寸,我建议实现一个递归遍历函数,