2016-02-17 63 views
2

有没有办法通过拖拽出它们的容器或按DEL键从dojo DnD Source中删除选定的项目?我试图通过添加一个dojo.connect-> onkeypress来达到此目的,但似乎Source不会听这个事件。Dojo DnD删除选定的项目

... 针对罗德里戈醌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()); 
}); 

//[...] 

在此先感谢。

+0

您可以发布您的代码? – RPichioli

回答

0

首先; dndSource不听按键事件。我相信它永远不会获得“关注”,只有它所包含的物品才能得到关注。然而,这确实听的东西,如“点击”等

其次,删除键没有在keypressed事件处理程序捕获,因为这只是用来捕捉打印的东西,所以<enter><del><esc>等不适为那个事件。

而是使用keyup或​​听众 - 并将其应用在window

下面的片段应该做什么youre瞄准:

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

你说得对。无法通过DnDSource获取按键事件处理程序。 “forEach ...”的方法听起来很敏感,但我仍然需要对用户按下DEL键的位置进行一种控制。 似乎我应该考虑不使用键盘从列表中删除元素。相反,尝试找到一种方法,通过将这些项目拖出该列表来移除这些项目。谢谢。 –

+0

除了这样的选择列表之外,还有一个“删除”按钮是很常见的,也许这就是你的错误。问题是,如果你使用'window.onkeyup ... key == keys.DELETE ...',这个事件就会被捕获。例如,如果您的用户试图删除他在输入字段 – mschr

+0

Yup中编写的文本,那就是我认为的mschr。也许这个DnD列表不是解决我的问题的正确方法。谢谢。 –