如果未在表单中聚焦,则捕获删除密钥

时间:2011-11-13 20:06:54

标签: javascript jquery forms keydown

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

有没有办法设置它,以便 delete 键在表单/输入中按预期工作,但是当应用程序中的任何其他位置它可以用作自定义删除功能?

1 个答案:

答案 0 :(得分:2)

我想到的第一件事就是stopPropagationinput字段上的textarea,然后preventDefault不应在{{1}上触发}}

JQuery伪代码:

document

另一种可能性是检查文档关键事件的原始目标。

事件回调:

$('input, textarea').keypress(e, function(e){e.stopPropagation();});
$(document).keypress(e, function(e){if(delete) e.preventDefault();});

如果你使用jQuery,第一行应该是过时的,因为它为你规范了事件,你可以使用var originalElement = e.srcElement || e.originalTarget; if(orignalElement.tagName === 'INPUT' or orignalElement.tagName === 'TEXTAREA'){ return; } // else do your delete key stuff 来获取e.target