如果 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 您可能期待的解决方案
在 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 您可能期待的解决方案