我正在使用fullcalndar selectMinDistance
示例init:
我认为这是通过像素比例实现的。我已将其设置为selectMinDistance: 155
var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'dayGridMonth',
selectable: true,
eventOverlap: true,
selectOverlap: true,
validRange: {
start: year + '-05-20',
end: year + '-11-15'
},
selectMinDistance: 155,
...
这很好,因为我希望至少选择3天。然而,当用户选择,然后决定按下同一鼠标取消选择时,他可以取消选择并将其减少到一天。有点违背目的。
有人知道FullCal中是否有什么东西可以防止这种情况发生,或者有一个好的解决方案吗?我没有在文档中找到任何可以帮助我的东西…
对于我的应用程序来说,selectMinDistance
不是最好的方法,有人指出我应该使用这里的selectAllow
,这非常有效。
我不知道为什么我第一次没有在网上搜索到它。
为了防止用户选择低于设定天数的日期,您可以使用此功能并抛出true或false,以便用户可以选择
我的示例用法
var year = new Date().getFullYear();
var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'dayGridMonth',
selectable: true,
eventOverlap: true,
selectOverlap: true,
validRange: {
start: year + '-05-20',
end: year + '-11-15'
},
// selectMinDistance: 155, this will not work for deselecting
selectAllow: function(selectInfo){
console.log(selectInfo);
// create a day
var oneDay = 24 * 60 * 60 * 1000;
var startDay = selectInfo.start;
// FullCalendar always gives next next day of select end day, so do minus one day
var endDay = selectInfo.end - oneDay;
var count = Math.round(Math.abs((startDay - endDay) / oneDay));
// starts at 0, so add to start at 1
var dayCount = (count + 1);
if(dayCount >= 3){
return true;
}else{
return false;
}
},
...