簡體   English   中英

Kendo Draggable-暫時從拖動事件處理程序中暫停拖動

[英]Kendo draggable - suspend dragging temporarily from drag event handler

這應該是一個簡單的問題

因此,我有一個非常簡單的kendoDraggable:

grid.kendoDraggable({
        . . .
        axis: "y",
        hint: getHint,
        drag: drag,
        dragend: dragend,
        dragstart: dragstart,
    });

我需要在“拖動”處理程序中測試我的條件,並在條件為true時防止拖動(因此不可能超出某些動態計算的邊界)。 但是,即使用戶未嘗試將鼠標拖到該邊框之外,也沒有釋放鼠標,仍應能夠將其拖到另一個方向。

如果我試圖停止事件的傳播,那么它將不起作用:

    function drag(e) {
        if (e.clientY < someDynamicValue) {
            e.preventDefault();
            e.stopImmediatePropagation();
            e.stopPropagation();
            return false;
        }

但是,如果我只是拋出任何異常,它的工作方式將完全符合我的期望。 如果條件為true,則不拖動,但如果條件為false,則拖動:

        function drag(e) {
        if (e.clientY < someDynamicValue) {
            throw "any exception";
        }

這是怎么回事? 如果條件為真,如何真正停止拖動?

謝謝!

PS我知道關於“容器”的kendoDraggable屬性,該屬性限制了可拖動對象,但是在滾動時效果不佳。

約束拖放操作的最佳方法是使用Jquery選擇器進行過濾。 為了動態地限制移動,您可以異步地從html元素添加/刪除類。 在以下示例中,用戶只能在網格行上拖動,而不能在正在編輯的當前單元格上拖動。 希望這可以幫助!

$("tbody").kendoDraggable({
    container: $("#Goals"),
    filter: "tr td:not(.k-edit-cell)",  
    hint: (item) => this.dragHint(item),
    drag: (e) => this.dragging(e)
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM