【问题标题】:js-hotkeys - how to bind to the ? question markjs-hotkeys - 如何绑定到?问号
【发布时间】:2011-06-04 22:26:58
【问题描述】:

我已经使用js-hotkeys 有一段时间了,喜欢它。

我现在想绑定到 ? 键,但这似乎不受支持。有谁知道为什么以及如何绑定到 问号?

$(document).bind('keydown', '?',function (evt) {
    alert('go');
});

上面的代码不起作用。

【问题讨论】:

    标签: jquery jquery-plugins binding hotkeys jquery-hotkeys


    【解决方案1】:

    怎么样

    $(document).bind('keyup', function (evt) {
        if (evt.keyCode == 191)
           alert("go");
    });
    

    【讨论】:

    • 这仅适用于 QWERTY 键盘,因为“?”位于“/”键上。当您点击“?”时,它会触发键码 191,即“/”。
    【解决方案2】:

    我相信该事件有一个标志是否按下了 shift 键,所以你可能想做这样的事情(我从未使用过 js-hotkeys,所以我可能完全错了):

    $(document).bind('keydown', '/', function (evt)
    {
      if (evt.shiftKey) //or whatever the flag for the shift key may be
      {
        alert('go');
      }
    });
    

    【讨论】:

    • 当然,这也假定?/ 键上的替代项。如果您使用语义快捷方式,您最好听正确的keyCode
    • 我不明白。你是说我应该使用 shift 键 + ?
    • 我是说你应该将它绑定到shift key 加上/ 键,因为这就是在标准qwerty 键盘上创建? 的原因。
    • 如果用户没有使用标准的 qwerty 键盘怎么办?
    • 哦,没关系,我看到你自己的评论已经指出了这一点。
    【解决方案3】:

    请注意,即使在输入框内也会触发以下内容:

    $(document).bind('keyup', function (evt) {
        if (evt.keyCode == 191)
           alert("go");
    });

    解决方案:

    $(document).bind('keyup', function(e) {
        if(e.keyCode === 191 && !$(e.target).is("input")) 
            alert("go");
    });

    请记住,texarea 也会发生同样的事情。

    【讨论】:

      【解决方案4】:

      使用 js-hotkeys,您可以使用字符串绑定问号:

      shift+/
      

      【讨论】:

        猜你喜欢
        • 2020-05-10
        • 2011-06-29
        • 2012-10-13
        • 2011-09-24
        • 2013-10-25
        • 1970-01-01
        • 2017-08-21
        • 2022-11-17
        • 2011-05-03
        相关资源
        最近更新 更多