New to Kendo UI for jQueryStart a free 30-day trial

Copying Events in Kendo UI for jQuery Scheduler

Updated on Feb 27, 2026

Environment

Product Kendo UI for jQuery Scheduler
Version 2026.1.212

Description

I want to copy an event in the Kendo UI for jQuery Scheduler by dragging it while holding the Ctrl key. However, when using the inline mode, the drag-and-drop functionality behaves differently compared to full-screen mode. Additionally, after copying an event, moving the copied event moves the original event instead. When copying events, no create or update request is sent to the server, but moving the new event triggers the update request correctly.

This knowledge base article also answers the following questions:

  • How to copy events in Kendo UI for jQuery Scheduler using Ctrl key?
  • Why does moving the copied event in Scheduler move the original event?
  • How to fire server requests when copying events in Kendo UI Scheduler?

Solution

Fullscreen vs Inline Mode Behavior

The difference between fullscreen and inline modes arises due to iframe isolation in the Dojo runner. Test outside the Dojo environment for accurate results.

Moving the Copied Event Moves the Original

Ensure a completely cloned event by:

  1. Creating a deep copy of the original event object.
  2. Removing properties such as uid, id, and taskId from the cloned object.
  3. Adding the cloned event to the Scheduler's dataSource.

Use the following code:

javascript
moveEnd: function(e) {
    if (ctrlKey) {
        var scheduler = $("#scheduler").data("kendoScheduler");
        var originalEvent = e.event;
        var newEvent = $.extend({}, originalEvent.toJSON());

        delete newEvent.uid;
        delete newEvent.id;
        delete newEvent.taskId;

        newEvent.start = e.start;
        newEvent.end = e.end;

        scheduler.dataSource.add(newEvent);
        scheduler.dataSource.sync();
        e.preventDefault(); // Prevent moving the original event
    }
}

Sending Server Requests When Copying Events

To ensure that a create request is fired when copying events, define a new event object explicitly:

javascript
moveEnd: function(e) {
    if (ctrlKey) {
        var scheduler = $("#scheduler").data("kendoScheduler");
        var newEvent = {
            title: e.event.title,
            start: e.start,
            end: e.end,
            ownerId: e.event.ownerId
        };

        scheduler.dataSource.add(newEvent);
        scheduler.dataSource.sync();
        e.preventDefault();
    }
}

For a runnable example please refer to this Demo.

Both approaches resolve the issue with copying events, ensuring correct behavior and server transactions.

See Also