这应该是一个简单的问题
所以,我有一个非常简单的kendoDraggable:
grid.kendoDraggable({
. . .
axis: "y",
hint: getHint,
drag: drag,
dragend: dragend,
dragstart: dragstart,
});
我需要在'drag'处理程序中测试我的条件,并在条件为真时阻止拖动(因此不可能超出一些动态计算的边界)。 但是如果用户没有释放鼠标,即使他试图拖过那个边界,用户也应该能够将它拖到另一个方向。
如果我试图阻止事件的传播,它就不起作用了:
function drag(e) {
if (e.clientY < someDynamicValue) {
e.preventDefault();
e.stopImmediatePropagation();
e.stopPropagation();
return false;
}
但是,如果我只是抛出任何异常,它就像我想要的那样。如果条件为真,它不会拖动,但如果条件为假则拖动:
function drag(e) {
if (e.clientY < someDynamicValue) {
throw "any exception";
}
发生了什么事?如果条件为真,如何真正停止拖动?
谢谢!
P.S。我知道'container'kendoDraggable属性会限制可拖动对象,但滚动效果不佳。
答案 0 :(得分:1)
限制拖放操作的最佳方法是使用Jquery选择器进行过滤。要动态约束移动,您可以异步添加/删除html元素中的类。在以下示例中,用户只能拖动网格行,但不能拖动正在编辑的当前单元格。希望这有帮助!
$("tbody").kendoDraggable({
container: $("#Goals"),
filter: "tr td:not(.k-edit-cell)",
hint: (item) => this.dragHint(item),
drag: (e) => this.dragging(e)
});