Dojo DnD 删除选中的项目

Dojo DnD delete selected items

有没有办法通过将项目拖出其容器或按 DEL 键从 dojo DnD 源中删除选定项目?我试图通过添加 dojo.connect->onkeypress 来实现这一点,但似乎源不听这个事件。

... 回应 Rodrigo Quiñones I've created a jsfiddle

//[...]
on(dom.byId('sortByItems'), 'keypress', function(evt) {
   if (evt.charOrCode == keys.DELETE)
       console.log('User wants to unselect:', sortByDnDTarget.getSelectedNodes());
});

//[...]

提前致谢。

首先; dndSource 不监听按键事件。我相信它永远不会获得 'focus',只有包含在其中的项目才能获得焦点。但是它确实会听 'click' 等

其次,在 keypressed 事件处理程序中未捕获 DELETE 键,因为它仅设计用于捕获可打印的内容,因此 <enter><del><esc>等不适用于该事件。

改为使用 keyupkeydown 听众 - 并将它们应用于 window

以下代码段应该可以满足您的目标:

sortByDnDTarget.getSelectedNodes().forEach(function(li) {
    sortByDnDTarget.delItem(sortByDnDTarget.getItem(li.id));
});