javascript - 如果未聚焦于表单,则捕获删除键

标签 javascript jquery forms keydown

我有一个使用 SVG 绘制点的 Web 应用程序,我想添加通过按 delete 键删除选定点的功能。我可以捕获整个文档的 delete 键按下(或向上)并阻止默认事件(Chrome 的默认行为是返回页面),但这显然会阻止所有删除事件,因此 delete 按钮在表单中不再起作用。

有没有办法对其进行设置,以便删除键在表单/输入中按预期工作,但在应用程序中的其他任何地方都可以用作自定义删除功能?

最佳答案

我想到的第一件事是在 inputtextarea 字段上 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/

相关文章:

javascript - 为什么这一直说它没有定义

javascript - jquery mask 输入插件仅设置日期的日值

javascript - 如何使用 HTML 元素阻止 THREE.js 光线转换?

javascript - 对象的映射函数(而不是数组)

javascript - 获取当前浏览器窗口中心

JavaScript/jQuery 在 IE 中停止运行

javascript - 使用 $.get 方法从 asmx 页面获取 xml 数据

html - 是什么导致提交按钮向下移动了一些 px?

javascript - 如果选中复选框,请按 Enter 键提交表单

javascript - 如何使用 Ionic 和 AngularJS 获取 radio 输入值?