我被困在这里,无法继续前进。任何帮助/指针将不胜感激。
我有一个Kendo网格,我正在网格上扩展一个函数,以便在更改事件被触发之前,我绑定了mousedown事件以获得用户的确认。只有在收到肯定确认后,才应解雇变更事件。在负面混淆中,我正在使用“stopImmediatePropagation”来实现此目的。
$("#KendoGrid").extendedFunction();
扩展功能定义如下:
$.fn.extendedFunction= function () {
var $grid = $(this);
var $kGrid = $grid.data("kendoGrid");
if (!$kGrid) {
return this;
}
else {
$kGrid.tbody.on('mousedown', function (e) {
showConfirmation(e);
});
}
};
function showConfirmation(e) {
var dialogResult = confirm("confirm?");
if (dialogResult) {
return true;
}
else {
e.stopImmediatePropagation();
return false;
}
}
return true;
}
因此,问题是当dialogResult为false时,立即传播按预期停止,但是当对话结果为true时......基础kendo事件不会被触发。
我也尝试过使用kgrid.trigger(“更改”);但那也不起作用。那么,有没有办法解决这个问题或者无论如何重置stopImmediatePropagation以便在dialogResult为true时触发kendo change事件?
提前致谢!!
答案 0 :(得分:0)
不是答案,但评论时间太长
您是否确定在e.stopImmediatePropagation()
事件中调用的mousedown
禁止了潜在的Kendo事件?我觉得抑制可能是由其他东西引起的,可能是显示确认对话本身,无论其结果如何。
如果是这样,那么您可能需要考虑完全不同的策略。
在与允许/禁止的代码相同的事件线程中放置确认更为正常,而不是在一个线程中获取语句来抑制另一个事件。我想你试图避免不得不破解Kendo代码,但最终可能是更容易的选择。
代码应简化如下:
$.fn.extendedFunction= function () {
var $grid = $(this);
var $kGrid = $grid.data("kendoGrid");
if ($kGrid) {
$kGrid.tbody.on('mousedown', function (e) {
if (!confirm("Confirm?")) {
e.stopImmediatePropagation();
}
});
}
return this;
};
如果如下所述,e.stopImmediatePropagation()
确实是禁止语句,那么更简单的代码可能会起作用。
答案 1 :(得分:0)
这次我在恐怖的“框架”中工作,我不能使用任何其他不同的策略,像这样(只是一个非常愚蠢的示例,但是可以工作):
np.where
可以帮助...