如果 select 允许回调中不允许 FullCalendar 禁用 select 天

FullCalendar disable select day if is not allowed in selectAllow callback

在 FullCalendar 插件中,我需要允许 selection 天直到一天或日期之间。我举个例子更好解释。

https://codepen.io/stefanmalex/pen/Jjjjgmp

我有一个包含禁止日期的数组:

var disallowedDays = ['2019-10-17', '2019-10-23', '2019-10-26']

我添加了 'selectAllow' 回调:

selectAllow: function (selectInfo) {
  if (disallowedDays.includes(selectInfo.startStr)) {
    return false;
  }
  return true;
}

如果您每天 select 天,这将非常有效,允许 select 数组中的所有天数减去不允许的天数。

问题:当您 select 多天时,它允许 select 不允许的天数。 (示例:select 从“2019-10-15”到“2019-10-26”)。

我需要的,例子: 如果 selection 从“2019-10-11”开始,它必须允许您 select 直到“2019-10-16”,因为第二天(“2019-10-17”)是不允许。

我把例子放在codepen上了。 https://codepen.io/stefanmalex/pen/Jjjjgmp

阿戴森已经正确识别了。 需要更改程序逻辑。 在 selectAllow 中,您使用 startStr 检查数组,所以基本上它只会检查 selection 的开始日期,而不是整个 selection。 因此,如果您尝试 select 10 月 14 日至 18 日,则需要检查/比较此范围内的不允许日期。 因此,需要循环遍历 disallowedDays 数组以检查已尝试 selection 中的每个日期,如以下循环:

for(var i=0;i<disallowedDays.length;i++)   {
    var dd = new Date(disallowedDays[i]);
    if(dd.getTime() >= startDate.getTime() && dd.getTime() <= endDate.getTime()){
        return true;
    }
  }

按照这个逻辑,check here 您可能期待的解决方案