我想定义<Shift> + ?
快捷方式以在每个页面中打开特定的帮助模式(我的意思是每个页面都有不同的内容)。就像Gmail一样
有数百种方法可以实现,但我的问题是如何在用户输入输入时阻止打开模态(触发事件)或者......!
该项目非常庞大,我无法返回并为所有输入,textareas或...编写事件,以防止我的快捷方式聚焦它们并在元素模糊时重新激活它。
所以我需要动态的想法!无论是Javascript,jQuery还是Angular!
对于希望看到虚拟重复代码的downvoter家伙:
$document.bind("keypress", function(e) {
if (e.shiftKey && e.keyCode == 191) {...}
});
答案 0 :(得分:2)
检查事件是源自input
还是textarea
:
$document.bind("keypress", function(e) {
if (e.shiftKey && e.keyCode == 191 &&
!$(e.target).closest("input, textarea").length // <=== The check
) {
// It did
if (e.shiftKey && e.keyCode == 191) {...}
});
我已经习惯closest
在一般情况下习惯这样做,但在这种特殊情况下,它有点傻:你只需要is
或检查{ {1}}对e.target.tagName.toUpper()
和"INPUT"
输入"TEXTAREA", neither
textarea`可以有后代元素:
nor