Fullcalendar - 需要事件不超过一天 - 使用 selectAllow 但 allDay 问题
Fullcalendar - Need event to not be more than a day - using selectAllow but issue with allDay
我正在使用 Fullcalendar 并且需要事件不超过一天。
当您选择一个小时范围时,它可以正常工作,但它不适用于全天活动,因为开始日期和结束日期不同。这是我的 selectAllow 函数。我知道这不优雅,我的 Javascript 是有限的!
function(selectInfo) {
var ambig = selectInfo.start._ambigTime;
var from_date = selectInfo.start._d;
from_date = String(from_date).substr(0, 10);
var to_date = selectInfo.end._d;
to_date = String(to_date).substr(0, 10);
if (from_date != to_date)
{
return false;
}
else
{
return true;
}
var duration = moment.duration(selectInfo.end.diff(selectInfo.start));
console.log(duration.asHours());
}
正如您从代码中看到的那样,我已经根据 ambigTime 进行了不同的检查(我假设这是否是 allDay?)并使用持续时间但持续时间不起作用一整天的时候。
非常感谢任何帮助。
多亏了 ADyson,我已经修好了。我想我可以整理代码,但下面的代码现在可以使用了。
function(selectInfo) {
console.log(selectInfo);
var ambig = selectInfo.start._ambigTime;
var from_date = selectInfo.start._d;
var from_dat = selectInfo.start;
var to_dat = selectInfo.end;
console.log(to_dat.diff(from_dat))
from_date = String(from_date).substr(0, 10);
var to_date = selectInfo.end._d;
to_date = String(to_date).substr(0, 10);
if (!ambig)
{
if (from_date != to_date) {
return false;
} else {
return true;
}
}
else
{
return to_dat.diff(from_dat) == 86400000;
}
var duration = moment.duration(selectInfo.end.diff(selectInfo.start));
console.log(duration.asHours());
}
实际上,您可以使用 selectConstraint 更巧妙、更简单地解决这个问题。这将用户的选择限制在某个 window 的时间。通过按照以下示例指定它,它有效地将单个选择限制为选择开始的那一天:
selectConstraint: {
start: '00:00',
end: '24:00',
},
我正在使用 Fullcalendar 并且需要事件不超过一天。
当您选择一个小时范围时,它可以正常工作,但它不适用于全天活动,因为开始日期和结束日期不同。这是我的 selectAllow 函数。我知道这不优雅,我的 Javascript 是有限的!
function(selectInfo) {
var ambig = selectInfo.start._ambigTime;
var from_date = selectInfo.start._d;
from_date = String(from_date).substr(0, 10);
var to_date = selectInfo.end._d;
to_date = String(to_date).substr(0, 10);
if (from_date != to_date)
{
return false;
}
else
{
return true;
}
var duration = moment.duration(selectInfo.end.diff(selectInfo.start));
console.log(duration.asHours());
}
正如您从代码中看到的那样,我已经根据 ambigTime 进行了不同的检查(我假设这是否是 allDay?)并使用持续时间但持续时间不起作用一整天的时候。
非常感谢任何帮助。
多亏了 ADyson,我已经修好了。我想我可以整理代码,但下面的代码现在可以使用了。
function(selectInfo) {
console.log(selectInfo);
var ambig = selectInfo.start._ambigTime;
var from_date = selectInfo.start._d;
var from_dat = selectInfo.start;
var to_dat = selectInfo.end;
console.log(to_dat.diff(from_dat))
from_date = String(from_date).substr(0, 10);
var to_date = selectInfo.end._d;
to_date = String(to_date).substr(0, 10);
if (!ambig)
{
if (from_date != to_date) {
return false;
} else {
return true;
}
}
else
{
return to_dat.diff(from_dat) == 86400000;
}
var duration = moment.duration(selectInfo.end.diff(selectInfo.start));
console.log(duration.asHours());
}
实际上,您可以使用 selectConstraint 更巧妙、更简单地解决这个问题。这将用户的选择限制在某个 window 的时间。通过按照以下示例指定它,它有效地将单个选择限制为选择开始的那一天:
selectConstraint: {
start: '00:00',
end: '24:00',
},