javascript - 在输入内部键入内容时忽略按键

标签 javascript angularjs focus keyboard-shortcuts keyboard-events

我有以下指令来捕获某些按键:

angular.module('app').directive('keyPress', function ($document) {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
            $document.bind('keyup', function (e) {
                if (e.keyCode == 83){  // S key
                    element.focus();
                };
                if (e.keyCode == 27){  // ESC key
                    element.blur();
                };
            });
        }
    }
});

搜索框元素然后使用它通过 SESC 键来聚焦和聚焦:

<input type="text" class="form-control" placeholder="Search" key-press>

不幸的是,当在包含此搜索输入的页面上输入其他输入时,也会检测到按键并聚焦搜索框。有没有办法仅在处于不同输入的焦点时捕获按键?

最佳答案

获取 event.target 您可以访问焦点元素,因此您可以检查焦点元素是否是输入。

$document.bind('keyup', function (event) {
    if(event.target.type === 'input') {
        return;
    }
    if (event.keyCode == 83){  // S key
        element.focus();
    };
    if (event.keyCode == 27){  // ESC key
        element.blur();
    };
});

关于javascript - 在输入内部键入内容时忽略按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45995448/

相关文章:

javascript - 从中间件nodejs传递参数

javascript - 单击另一个切换 div 时将图标切换回 "i"元素到原始位置

javascript - 如何在 AngularJs Dropdown 中只呈现可见项目

javascript - 在 iPad 上,如何在不显示选项的情况下通过 Javascript 事件在选择元素上设置 focus()?

javascript - jquery 验证接受方法 - TypeError : Cannot read property 'call' of undefined

javascript - JavaScript 错误处理的最佳实践是什么?

vb.net - openCV 仅适用于 C 开发人员吗?...任何适用于 VB 开发人员的 openCV?

Jquery:悬停/取消悬停与模糊/焦点相结合

javascript - 如何防止 Handlebars "{{}}"在实际数据加载之前出现在 AngularJs 应用程序的 UI 中?

angularjs - 显示错误 - "Blink deferred a task in order to make scrolling smoother"