fullcalendar-无法获取所选月份的月份和年份

Posted

技术标签:

【中文标题】fullcalendar-无法获取所选月份的月份和年份【英文标题】:fullcalendar- unable to get month and year of the selected month 【发布时间】:2016-12-28 08:11:57 【问题描述】:

事情是这样的,

我正在为我的网站上的用户制作日历视图,我可以在其中显示他们的每月会议和分类信息。 我正在使用全日历。仅启用了月视图。还有下一个和上一个箭头按钮。

这就是我想要做的。当用户单击其中一个箭头按钮时,我将获取所选月份的月份和年份信息,并使用 ajax 调用将其传递给后端服务,以获取他/她的会议并将其显示在该日历上。

但是,我无法获取月份和年份信息。我尝试了两种方法来实现这一点。

方法一

试图在 viewrender 上获取它

viewRender: function(event, view, element) 
  console.log(view.start, view.end, view.intervalStart, view.intervalEnd);
  console.log($('#calendar').fullCalendar('getDate'));
  var date = new Date();
  var m = date.getMonth();
  var y = date.getFullYear();
  console.log(m + y);

方法 1 没有结果。

方法2:我可以得到箭头按钮的点击事件,但是我得到的年份和月份总是分别是201611

  $('.fc-button-prev span').click(function() 
    var date = new Date();
    var m = date.getMonth();
    var y = date.getFullYear();
    console.log(m);
  );

  $('.fc-button-next span').click(function() 
    var date = new Date();
    var m = date.getMonth();
    var y = date.getFullYear();
    console.log(y);
  );

我在我的小提琴中评论了方法 2。

这是我的FIDDLE。

如果你想看代码。

$(document).ready(function() 
  var date = new Date();
  var d = date.getDate();
  var m = date.getMonth();
  var y = date.getFullYear();

  var calendar = $('#calendar').fullCalendar(
    defaultView: 'month',
    header: 
      left: 'prev,next',
      center: 'title',
      right: 'month'
    ,
    eventRender: function(event, element, view) 
      var nextEventLeft = element.offset().left + element.width() + 5;
      element.parent().children().eq(element.index() + 1).css('left', nextEventLeft);
    ,

    viewRender: function(event, view, element) 
      console.log(view.start, view.end, view.intervalStart, view.intervalEnd);
      console.log($('#calendar').fullCalendar('getDate'));
      var date = new Date();
      var m = date.getMonth();
      var y = date.getFullYear();
      console.log(m + y);
    ,

    selectable: true,
    selectHelper: true,

    year: y,
    month: m,
    date: d,

    slotMinutes: 15,
    editable: true,

    events: [
      title: 'Sales Meeting',
      start: new Date(y, m, d, 10, 30),
      end: new Date(y, m, d, 11, 30),
      allDay: false,
      className: 'fc-event-width-overirde'
    , 
      title: 'Marketing Meeting',
      start: new Date(y, m, d, 10, 30),
      end: new Date(y, m, d, 11, 30),
      allDay: false,
      className: 'fc-event-width-overirde'
    , 
      title: 'Production Meeting',
      start: new Date(y, m, d, 10, 30),
      end: new Date(y, m, d, 11, 30),
      allDay: false,
      className: 'fc-event-width-overirde'
    ]

  );
  /*
  $('.fc-button-prev span').click(function() 
    var date = new Date();
    var m = date.getMonth();
    var y = date.getFullYear();
    console.log(m);
  );

  $('.fc-button-next span').click(function() 
    var date = new Date();
    var m = date.getMonth();
    var y = date.getFullYear();
    console.log(y);
  );
  */

);

【问题讨论】:

在你的方法2中,你只是用var date = new Date();得到当前时间,这就是为什么你总是得到2016和11。你应该从日历中得到日期,也许用$('#calendar').fullCalendar('getDate') 如果当前月份视图是 2016 年 12 月,我单击上一个按钮。使用您的代码,我得到的是 Date Thu Dec 01 2016 00:00:00 GMT+0530 (IST) 而不是 11 月的日期。 @ivn 如果你再次点击,你会得到 11 月(但你会看到 10 月)...,而且总是一个月。那是因为在click 事件中,您从日历当前状态获取日期,而不是在转换之后。因此,您可以根据单击的下一个/上一个箭头添加/删除一个月,或者更好地通过 fullcalendar doc 挖掘更多内容以了解如何在过渡后获取日期... 【参考方案1】:

这是满足相同要求的工作代码。完整日历以 UNIX 系统格式隐式传递日历的开始日期和结束日期。

$('#calendar').fullCalendar(
		header: 
			left: 'prev,next',
			center: 'title',
			right: ''
		,
		editable: true,
		   eventSources: [
			   url: ' your url.. ',
	            type: 'POST',
	            data: 
	            		dataType: 'json',
		    			pagination : true,
		    			viewType : 'calendar',
						..... your params goes here ,
	            ,
	            error: function() 
	                alert('there was an error while fetching events!');
	            
		   ]
		,
		eventClick: function(calEvent, jsEvent, view) 
		
			
			
		var clickdDate =$.fullCalendar.formatDate(calEvent.start, "dd MMM yyyy");
		
			// do something with clickdDate in calendar if want
	      	
	    
	);

【讨论】:

【参考方案2】:

您将获得完整的日期,以便您可以修改它以获得年份和月份

var moment = $('#calendar').fullCalendar('getDate').format().split('-');

moment[0] -> 表示年份 时刻[1] -> 日期

【讨论】:

以上是关于fullcalendar-无法获取所选月份的月份和年份的主要内容,如果未能解决你的问题,请参考以下文章

fullcalendar jquery显示月份加1

JS - FullCalendar:当月份变化时收听

[fullcalendar]让 listMonth 显示比月份更多的详细信息

[fullcalendar]让listMonth显示比月份更多的细节

JS 如何获取当前上一个月下一个月和月份所含天数

如何使用Fullcalendar单击年份视图的相应月份单元格时重定向到月视图