单击时选择多个时间段



当我在fullCalendar上单击一个空时间段时,它会在该空单元格上绘制一个矩形。因此,如果我的 slotDuration 是 30 分钟,则该块代表 30 分钟。我还可以将光标拖到多个单元格上并选择自定义范围。但我需要做的是,当用户单击(而不是拖动)单元格时,在 2 个单元格(代表 1 小时)上选择并绘制矩形。这可能吗?我无法更改插槽持续时间。如果我将 snapDuration 更改为 1 小时,它可以工作,但遗憾的是,我也无法更改它。我一直在寻找一种覆盖event.end的方法,但这不起作用。

更新 1:
我能够这样做来公开cellDuration属性:

在完整日历上.js:

t.setCellDuration = function (minutes) {        
    var duration = moment.duration(minutes, 'minutes');
    var view = t.getView();     
    view.timeGrid.cellDuration = duration;
}

现在在renderEvent处理程序上,我可以调用

element.fullCalendar("setCellDuration", 60);

它可以工作,但如果有一个不涉及更改完整日历代码的替代方案,那就太好了。

我认为你不能只修改日历的属性,但你可以修改 fullCalendar.js 文件。是的,我知道你在这个问题上具体说明,但我认为别无选择。

正是 listenStop 函数,位于版本 2.3.3 的第 4527 行

侦停止检查数组调用dates

dates[
   {FCMoment}, //start
   {FCMoment}  //end
]

因此,在检查之前,您可以根据需要修改结束时间。此外,您必须渲染它。在你的代码中,现在 listenStop() 函数应该是这样的:

 listenStop: function(ev) {
            if (dates) { // started and ended on a cell?
                if (dates[0].isSame(dates[1])) {
                    dates[1] = dates[0].clone().add(1, 'hours');    //Now we modify the end
                    _this.renderSelection(dates[0], dates[1]);      //And render the modified selection
                    view.trigger('dayClick', dayEl[0], start, ev);
                }
                if (isSelectable) {
                    // the selection will already have been rendered. just report it
                    view.reportSelection(start, end, ev);
                }
            }
        }

相关内容

  • 没有找到相关文章

最新更新