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', 
},

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