在FullCalendar插件中,我需要允许选择直到一天或几天之间的日期。我举了一个例子来更好地解释。
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;
}
如果您每天选择一天,这将非常有效,允许选择数组中所有天数少于不允许的天数。
问题:当您选择多个日期时,它允许选择不允许的日期。 (例如:从“ 2019-10-15”到“ 2019-10-26”中选择)。
我需要的示例: 如果选择从'2019-10-11'开始,则必须选择直到'2019-10-16',因为不允许第二天('2019-10-17')。
我将示例放在Codepen上。 https://codepen.io/stefanmalex/pen/Jjjjgmp
答案 0 :(得分:1)
ADyson已正确识别它。
程序逻辑需要更改。
在selectAllow
中,您正在使用startStr检查数组,因此基本上它将仅检查选择的开始日期,而不检查整个选择的开始日期。
因此,如果您尝试选择14 oct到18 oct,则需要检查/比较此范围内的不允许日期。
因此,需要遍历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;
}
}
按照此逻辑,check here您可能期望的解决方案