【问题标题】:jQuery.HotKeys keybinding while input is focused输入焦点时的 jQuery.HotKeys 键绑定
【发布时间】:2017-04-20 22:17:02
【问题描述】:

我正在使用 jquery.hotkeys 来实现键盘快捷键。

我的代码:

$(document).bind('keydown', 'Ctrl+f', function () {
        $('#myid').focus();
        return false;
    });

这很好用。但是,如果任何输入处于焦点,则击键默认为浏览器原始(在本例中为查找)。如果我在输入框外单击,jquery.hotkeys 会调用预期的函数。

如果我想获得无论输入是否聚焦的统一行为,我应该怎么做?

【问题讨论】:

  • 所有热键都以 ctrl 开头吗?
  • @Kramb 是的,不幸的是:-(

标签: javascript jquery dom jquery-hotkeys


【解决方案1】:

你可以试一试:

$(document).bind('keydown', function(e) {
    if (e.ctrlKey && e.which == 70) {
        $('#myid').focus();
        return false;
    }
});

问题是,它没有使用插件。因此,即使它对您有用,也不要将其标记为答案,因为它没有回答最初的问题恕我直言。

【讨论】:

    【解决方案2】:

    参考文档:https://github.com/jeresig/jquery.hotkeys#hotkeys-within-inputs

    如果用户专注于输入元素,则不会跟踪热键 或任何具有 contenteditable="true" 的元素,除非您绑定 直接指向元素的热键。这有助于避免与 普通用户打字。如果你不想要这个,你可以改变 适合以下布尔值:

    jQuery.hotkeys.options.filterInputAcceptingElements jQuery.hotkeys.options.filterContentEditable jQuery.hotkeys.options.filterTextInputs(已弃用,将被删除 在以后的版本中)

    【讨论】:

    • 我看到了这些选项,但是它们要么不起作用,要么我不知道它们的语法(有一些 jQuery 基础知识让我很苦恼)。我认为应该是:jQuery.hotkeys.options.filterInputAcceptingElements = false; 但这不起作用。对吗?
    猜你喜欢
    • 2016-07-02
    • 1970-01-01
    • 2011-12-29
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2016-06-20
    • 1970-01-01
    相关资源
    最近更新 更多