FullCalendar日历插件的简单使用(版本4.2.0)

编程入门 行业动态 更新时间:2024-10-28 21:26:25

最近开的一个项目,涉及到了日历日程安排的功能,所以选用了一个免费的日历插件:FullCalendar

1.首先去官网将官方的demo下载下来,通过官方的demo进行一个初步的了解,下面正式开始

PS:中文文档的可能不太全,不清楚的可以去官网看看

2.建议先试试官方的示例:

  document.addEventListener('DOMContentLoaded', function() {
    var calendarEl = document.getElementById('calendar');

    var calendar = new FullCalendar.Calendar(calendarEl, {
      plugins: [ 'interaction', 'dayGrid', 'timeGrid', 'list', 'rrule' ],
      header: {
        left: 'prev,next today',
        center: 'title',
        right: 'dayGridMonth,timeGridWeek,timeGridDay,listMonth'
      },
      defaultDate: '2019-06-12',
      editable: true,
      events: [
        {
          title: 'rrule event',
          rrule: {
            dtstart: '2019-06-09T13:00:00',
            // until: '2019-06-01',
            freq: 'weekly'
          },
          duration: '02:00'
        }
      ],
      eventClick: function(arg) {
        if (confirm('delete event?')) {
          arg.event.remove()
        }
      }
    });

    calendar.render();
  });

</script>
<style>

  body {
    margin: 40px 10px;
    padding: 0;
    font-family: Arial, Helvetica Neue, Helvetica, sans-serif;
    font-size: 14px;
  }

  #calendar {
    max-width: 900px;
    margin: 0 auto;
  }

</style>
</head>
<body>

  <div id='calendar'></div>

</body>
</html>

3.正式开始,首先引入相关的js/css

 PS:必须将jquery放在最上面!

 jquery-form.js则是我后面需要用ajaxFrom,如果不用可不引入。

<link href='../fm/js/common/fullcalendar-4.2.0/packages/core/main.css' rel='stylesheet' />
 <link href='../fm/js/common/fullcalendar-4.2.0/packages/daygrid/main.css' rel='stylesheet' />
<link href='../fm/js/common/fullcalendar-4.2.0/packages/timegrid/main.css' rel='stylesheet' />

<script src='/fm/js/common/jquery-2.1.4.js'></script>
<script src='/fm/js/common/jquery-form.js'></script>

<script src='../fm/js/common/fullcalendar-4.2.0/packages/core/main.js'></script>
<script src='../fm/js/common/fullcalendar-4.2.0/packages/interaction/main.js'></script>
<script src='../fm/js/common/fullcalendar-4.2.0/packages/daygrid/main.js'></script>
<script src='../fm/js/common/fullcalendar-4.2.0/packages/timegrid/main.js'></script>
<script src="../fm/js/common/fullcalendar-4.2.0/packages/core/locales/zh-cn.js"></script>

4.构建一个简单的页面

  <div id="calendar"></div>

5.js方法相关

$(function () {
    initFullCalendar();
});

function initFullCalendar(){
    var calendarEl = document.getElementById('calendar');
    var calendar = new FullCalendar.Calendar(calendarEl, {
        plugins: ['interaction', 'dayGrid', 'timeGrid'],
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'dayGridMonth,timeGridWeek,timeGridDay'
        },
       // defaultDate: '2019-06-12',
        navLinks: true, // can click day/week names to navigate views
        //允许用户通过点击或拖动选择日历中的对象
        selectable: true,
        locale: 'zh-cn',
        selectMirror: true,
        editable: true,
        eventLimit: true,
        //绑定一个mothod,在点击日历时可以弹出页面
        select:  function(arg){
            //modal 是semantic ui中的弹框样式
            $(".ui.small").modal({
                onShow : function() {
                   //弹框显示的时候
                },
                //点击弹框确定按钮
                onApprove : function() {
                     //弹出的页面,通过ajaxForm的方法存入数据库中
                    $("#calendar_form").ajaxSubmit({
                        type: 'POST',
                        url: '/**/**/insertJobSchedule', 
                        success: function(result) { 
                        // data 保存提交后返回的数据,一般为 json 数据
                        //可以进行一些操作   
                        },
                        error:function(){
                            console.info("提交失败失败");
                        }
                    })
                    //对日历页面进行实时更新
                    var start = $("#transact_date").val();
                    var end = $("#end_date").val();
                    var jobAbstract = $("#jobAbstract").val();
                    calendar.addEvent({
                        title: jobAbstract,//必须参数
                        start: start,//必须参数
                        end: end,//非必须
                        //allDay: arg.allDay
                    })
                    calendar.unselect();
                },
                //弹框隐藏时
                onHidden : function() {
                   
                }
              }).modal('show');
        },
        //点击添加的事件触发的方法
        eventClick : function(arg) {
          console.info(arg.event.id);
            if (confirm('delete event?')) {
              arg.event.remove()
            }
          },
        //进入日历界面进行加载添加过的数据
        events: function( fetchInfo, successCallback, failureCallback ){
          var events = [];
            $.ajax({
              type:"POST",
              url:"/**/**/selectAllJob",
              dataType:"json",
              success:function(result){
                console.info(result.msg);
                if(result.status){
                  console.info(result.obj.jobScheduleList);
                 var jobScheduleList =  result.obj.jobScheduleList;
                 if(jobScheduleList.length > 1){
                    $.each(jobScheduleList,function(i,j){
                        events.push({
                          id:j.id,
                          title: j.jobAbstract,
                          start: new Date(j.startDate).format('yyyy-MM-dd hh:mm:ss'),           // will be parsed
                          end:new Date(j.endDate).format('yyyy-MM-dd hh:mm:ss')
                        });
                    })
                    //回调渲染日历
                    successCallback(events);
                 }
                }
              },
              error:function(){

              },
            })
        }
    });
    calendar.render();
}

5.下面我是用的日期格式化方法 格式是:yyyy-MM-dd hh:mm:ss

//将数据库的时间戳转成 字符串
Date.prototype.format = function(format) {
  var o = {
      "M+": this.getMonth() + 1,
      "d+": this.getDate(),
      "h+": this.getHours(),
      "m+": this.getMinutes(),
      "s+": this.getSeconds(),
      "q+": Math.floor((this.getMonth() + 3) / 3),
      "S": this.getMilliseconds()
  }
  if (/(y+)/.test(format)) {
      format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  }
  for (var k in o) {
      if (new RegExp("(" + k + ")").test(format)) {
          format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
      }
  }
  return format;
}

 

更多推荐

FullCalendar日历插件的简单使用(版本4.2.0)

本文发布于:2023-06-14 00:25:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1417756.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:插件   日历   版本   简单   FullCalendar

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!