Kendo UI Calendar: принудительный выбор нескольких элементов - PullRequest
0 голосов
/ 28 июня 2018

Календарь 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? Или есть способ отключить функцию щелчка и перетаскивания, которая портит второе решение?

---- Обновление:

Не используйте обходной путь, найденный в этой статье о кендо. Прекращает работу масштабирование (к просмотру месяца). И обработчик при нажатии утекает. Используйте ответ, найденный ниже.

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете отменить привязку пользовательских событий, связанных с перетаскиванием, из модуля 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);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...