完整日历 - 要求事件不超过一天 - 使用选择允许但问题为全天



我正在使用完整日历,需要事件不超过一天。

当您选择小时范围时,我已经让它工作,但它永远不适用于 allDay 事件,因为开始日期和结束日期不同。 这是我的选择允许函数。 我知道它不优雅,我的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?(并使用持续时间,但持续时间在一整天时不起作用。

任何帮助非常感谢。

实际上,通过使用 selectConstraint,您可以更简洁地解决这个问题。这会将用户的选择限制在某个时间窗口内。通过按照以下示例指定它,它可以有效地将单个选择限制为选择开始的日期:

selectConstraint: {
start: '00:00', 
end: '24:00', 
},

演示:http://jsfiddle.net/9qv5xz18/

感谢 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());
}

最新更新