简体   繁体   English

月视图更改后无法选择日期 - fullcalendar

[英]Can't choose date after month view change - fullcalendar

I use the fullcalendar to indicate the days when a courier can be ordered.我使用 fullcalendar 来表示可以订购快递的日期。 You can always choose one of the two days that are after today (not including Saturday and Sunday).您始终可以选择今天之后的两天之一(不包括周六和周日)。 If you change the month view, you won't select any day.如果您更改月份视图,您将不会在任何一天 select 。 I do not know why.我不知道为什么。

January (I can choose February 1)一月(我可以选择2月1日)

在此处输入图像描述

After changing the view to the following month on February 1 - you cannot click在 2 月 1 日将视图更改为下个月后 - 您无法单击

在此处输入图像描述

$("#receiveCalendar").fullCalendar({
locale: 'pl',
buttonText: {
  today: 'Dziś'
},
dayClick: function dayClick(calEvent, jsEvent, view) {
  if ($(jsEvent.target).hasClass('fc-future')&&!$(jsEvent.target).hasClass('fc-sat')&&!$(jsEvent.target).hasClass('fc-sun')&&$(jsEvent.target).hasClass('enable')) {
    $('#receiveDateValue').val(calEvent.format('YYYY-MM-DD')).change();
    $(".fc-day, .fc-day-top").removeClass('selected');
    $(jsEvent.target).addClass('selected');
    $(".fc-day-top[data-date='" + $(jsEvent.target).data('date') + "']").addClass('selected');
  }
},
viewRender: function(view, element){
  console.log(view)
  console.log(element)
  let day1, day2;
  let todayDate = new Date($('.fc-today').data('date'));
  let todayDateObj = moment(todayDate).format("YYYY-MM-DD");
  if ($('.fc-today').hasClass('fc-thu')) {
    day1 = moment(todayDateObj).add(1, 'days');
    day2 = moment(todayDateObj).add(4, 'days');
  } else if($('.fc-today').hasClass('fc-fri')){
    day1 = moment(todayDateObj).add(3, 'days');
    day2 = moment(todayDateObj).add(4, 'days');
  } else if($('.fc-today').hasClass('fc-sat')){
    day1 = moment(todayDateObj).add(2, 'days');
    day2 = moment(todayDateObj).add(3, 'days');
  } else {
    day1 = moment(todayDateObj).add(1, 'days');
    day2 = moment(todayDateObj).add(2, 'days');
  }
  day1 = day1.format("YYYY-MM-DD")
  day2 = day2.format("YYYY-MM-DD");
  $('.fc-future[data-date="'+day1+'"], .fc-future[data-date="'+day2+'"]').addClass("enable");
},
eventRender: function(eventObj, $el) {
  $el.popover({
    content: eventObj.description,
    trigger: 'hover',
    placement: 'top',
    container: 'body'
  });
},
events: holidays
});

I solved the problem myself.我自己解决了这个问题。 As I wrote in the comments above, the problem was with the "fc-today" class.正如我在上面的评论中所写,问题出在“fc-today”class 上。 The new month view didn't include it.新月视图不包括它。 I wrote a few lines of code to solve this situation:我写了几行代码来解决这种情况:

viewRender: function (view, element) {
//some of new variables
let day1, day2, secondDayOfNextMonth, formattedDate, diff;

// new block of code
const currentDay = new Date();
const startOfNextMonth = moment().add(1, 'M').startOf('month').format("YYYY-MM-DD HH:mm:ss");
let firstDayOfNextMonth = moment(startOfNextMonth).format("YYYY-MM-DD");
let firstDayOfNextMonthName = moment(startOfNextMonth).format('ddd');

formattedDate = moment(currentDay).add(3, 'days').format("YYYY-MM-DD");
diff = moment(firstDayOfNextMonth).diff(moment(formattedDate), 'days');

if (!$('.fc-day').hasClass('fc-today') && (firstDayOfNextMonthName === 'Mon') && (diff >= 0 && diff <= 3)) {
    secondDayOfNextMonth = moment(firstDayOfNextMonth).add(1, 'days').format("YYYY-MM-DD");
    $('.fc-future[data-date="' + firstDayOfNextMonth + '"], .fc-future[data-date="' + secondDayOfNextMonth + '"]').addClass("enable");
}
// end new block of code

}; };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM