在FullCalendar插件中,我需要允许选择一天或日期之间的天数。我举了一个例子来更好地解释。
https://codepen.io/stefanmalex/pen/Jjjjgmp
我有一个不允许天数的数组:
var disallowedDays = ['2019-10-17', '2019-10-23', '2019-10-26']
我添加了"选择允许"回调:
selectAllow: function (selectInfo) {
if (disallowedDays.includes(selectInfo.startStr)) {
return false;
}
return true;
}
如果您选择每天的天数,则此方法非常有效,允许选择数组中所有天数较少的天数。
问题:当您选择多天时,它允许选择不允许的天数。(示例:从"2019-10-15"到"2019-10-26"中选择(。
我需要什么,例如: 如果选择从"2019-10-11"开始,则必须允许您选择直到"2019-10-16",因为第二天("2019-10-17"(是不允许的。
我让代码笔上的例子。 https://codepen.io/stefanmalex/pen/Jjjjgmp
> ADyson 已经正确识别了它。 程序逻辑需要更改。 在您使用startStr检查数组selectAllow
,因此基本上它将仅检查选择的开始日期,而不是整个选择。 因此,如果您尝试选择10月14日至10月18日,则需要检查/比较此范围内的不允许日期。 因此,需要遍历 disallowedDays 数组以检查尝试选择中的每个日期,如以下循环:
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;
}
}
按照此逻辑,在此处检查您可能期望的解决方案