我有一个使用 SVG 绘制点的 Web 应用程序,我想添加通过按 delete 键删除选定点的功能。我可以捕获整个文档的 delete 键按下(或向上)并阻止默认事件(Chrome 的默认行为是返回页面),但这显然会阻止所有删除事件,因此 delete 按钮在表单中不再起作用。
有没有办法对其进行设置,以便删除键在表单/输入中按预期工作,但在应用程序中的其他任何地方都可以用作自定义删除功能?
最佳答案
我想到的第一件事是在 input
和 textarea
字段上 stopPropagation
,然后是 preventDefault
不应在文档
上触发。
JQuery 伪代码:
$('input, textarea').keypress(e, function(e){e.stopPropagation();});
$(document).keypress(e, function(e){if(delete) e.preventDefault();});
另一种可能性是检查文档关键事件的原始目标。
事件回调:
var originalElement = e.srcElement || e.originalTarget;
if(orignalElement.tagName === 'INPUT' or orignalElement.tagName === 'TEXTAREA'){ return; }
// else do your delete key stuff
如果您使用 jQuery,第一行应该已过时,因为它为您标准化了事件,并且您可以使用 e.target
来获取 originalTarget
关于javascript - 如果未聚焦于表单,则捕获删除键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8114338/