JS>键入

时间:2016-07-09 12:45:31

标签: javascript jquery html angularjs

我想定义<Shift> + ?快捷方式以在每个页面中打开特定的帮助模式(我的意思是每个页面都有不同的内容)。就像Gmail一样 有数百种方法可以实现,但我的问题是如何在用户输入输入时阻止打开模态(触发事件)或者......!
该项目非常庞大,我无法返回并为所有输入,textareas或...编写事件,以防止我的快捷方式聚焦它们并在元素模糊时重新激活它。
所以我需要动态的想法!无论是Javascript,jQuery还是Angular!
对于希望看到虚拟重复代码的downvoter家伙:

$document.bind("keypress", function(e) {
    if (e.shiftKey && e.keyCode == 191) {...}
});

1 个答案:

答案 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