首页 > 解决方案 > Kendo UI 日历:强制多选

问题描述

Kendo UI 日历支持多选:https ://demos.telerik.com/kendo-ui/calendar/selection

但是,需要按住 ctrl 键才能选择多个日期。如果用户定期点击日历,所有现有日期都将被清除。我希望日历始终处于多选模式,就好像一直按住 ctrl 键一样。

剑道在这里有一篇关于这样做的文章:https ://docs.telerik.com/kendo-ui/knowledge-base/calendar-select-dates-click

但是当用户点击并拖动多个日期时,这不起作用(它只适用于一次点击一个日期)。

有没有办法“覆盖” jQuery 事件并将其ctrlKey标志设置为 true?或者有没有办法禁用破坏第二个解决方案的点击和拖动功能?

- - 更新:

不要使用这篇剑道文章中的解决方法。它使缩小(到月视图)停止工作。并且点击处理程序泄漏。使用下面找到的答案。

标签: javascriptjquerykendo-uicalendar

解决方案


selectable您可以从日历模块中取消绑定与拖动相关的用户事件。你会做这样的事情:

var ue = $("#calendar").getKendoCalendar().selectable.userEvents;
ue.unbind("start");
ue.unbind("move");
ue.unbind("end");

或者,如果您想保留拖动功能,您可以通过执行以下操作来调整拖动开始:

var selectable = $("#calendar").getKendoCalendar().selectable;
selectable.userEvents.unbind("start");
selectable.userEvents.bind("start", function(e){
    e.target.removeClass("k-state-selected");
    e.event.ctrlKey = true;
    selectable._start(e);
});

推荐阅读