kendo-ui - 防止删除键在 Kendo ListBox 上工作
问题描述
我在使用 MVVM 的 Razor 页面上使用 Kendo。在特定页面上,我有一对 ListBoxes。我想阻止用户使用删除键从框中删除项目。
如果我捕获并阻止remove
事件工作,则可以解决问题,除非您不能使用工具箱或拖放将项目从一个盒子转移到另一个盒子(编辑:因为移动是更改和删除事件的组合)。
这就是我停止删除事件的方式......
<select style="min-width: 600px" id="listboxImports" data-role="listbox"
data-text-field="title"
data-value-field="id"
data-selectable="multiple"
data-toolbar='{tools: ["transferTo", "transferFrom"]}'
data-connect-with="listboxSelected"
data-draggable="true"
data-template="template"
data-drop-sources="['listboxSelected']"
data-bind="source: imports, events: {remove: viewmodel.events.remove}"></select>
<script>
var viewmodel = new kendo.observable({
events: {
remove: function(e) {
e.preventDefault();
},
//
}
});
<script/>
我还尝试捕获删除键的keydown
事件,但我无法确定在呈现 ListBox 时呈现的众多元素中的哪一个实际上正在处理该事件。
谁能告诉我怎么才能吃蛋糕吗?
解决方案
花了一段时间,灵感来自剑道多选的相同问题:https ://docs.telerik.com/kendo-ui/controls/editors/multiselect/how-to/selection/prevent-removing-selected-items-on-退格:
$("#listBoxA").parent().get(0).addEventListener('keydown', function(e) {
if (e.keyCode == kendo.keys.DELETE) {
e.stopImmediatePropagation();
e.preventDefault();
}
}, true)
完整道场:https ://dojo.telerik.com/aFaCIkez/3
_keyDown 处理程序附加到 <ul> 元素。我的解决方案使用event capture将一个新的处理程序附加到其父处理程序,以便该处理程序将在 Kendo 之前执行,因此如果按下的键被删除,则停止事件的传播。
或者,一种可能的解决方法是设置navigatable
为 false,但您显然会失去所有键盘功能。示例:https ://dojo.telerik.com/IHICAziR
推荐阅读
- c# - Directory.Delete(path,true) 文件正被另一个进程使用
- angular - 获取 JWT 令牌的 Angular http POST 返回 200ok 并出现解析错误
- django - 使用 Ngnix、Django 和 Docker 提供静态文件
- excel - 多个单元格 Vlookup 搜索
- php - 使用 php 生成搜索 URL 并通过 HTML 链接重定向
- java - 如何更新本机构建的 JavaFX 应用程序
- java - Java中的升序数字
- reactjs - 将 componentWillUpdate 与 switch 语句一起使用
- python - 在python中具有平方iverse权重的Knn分类器(权重是一个可调用函数)
- javascript - jquery点击内部链接后获取窗口滚动位置