【问题标题】:Issue with Alt or Ctrl key codes in forms表单中的 Alt 或 Ctrl 键代码问题
【发布时间】:2014-04-23 22:04:52
【问题描述】:

诸如Alt + 0233 之类的组合键给出é。在我的在线表单中,我想使用Alt + eCtrl + e 来生成é。我知道如何用 jQuery 做到这一点,但问题是 Alt + e 也与浏览器的编辑菜单相关联,因此打开了菜单。同样,Ctrl + e 也与其他一些浏览器功能相关联。使用Ctrl + ' + e 也会得到相同的结果。

我想知道是否有解决此问题的方法。有人试过类似的吗?

【问题讨论】:

    标签: jquery keycode


    【解决方案1】:

    你可以通过捕获击键和处理得到你需要的东西:

    $('#scanned_element').keypress(function(e) {
        if (e.which == 101) {
            if (e.altKey) {
                /* Alt-e was pressed here  (code 101 = 'e')*/
                ...
                /* Stop event from bubbling */
                e.preventDefault();
                return false;
            }
        }
    });
    

    您可能还想查看 Jquery Hotkeys (https://github.com/jeresig/jquery.hotkeys)

    【讨论】:

    • 如果您打算这样做,您可能还需要调用 e.preventDefault()return false 以阻止事件冒泡到浏览器。
    • @shortstuffsushi 是的,我认为这可以解决问题。我完全忘记了e.preventDefault()
    • 伙计们,您是否也知道如何使用Ctrl + ' + e 来执行上述操作。我试过if (e.which == 101 && e.which == 39 && e.ctrlKey),但它似乎不起作用。在此处查看演示:jsfiddle.net/hzLwC
    • e.which 每次调用该函数时只有一个值,因此e.which == 101 && e.which == 39 永远不会为真。
    • @shortstuffsushi 我在不同的浏览器中测试脚本,发现e.preventDefault() 似乎只在 Firefox 中有效,而在其他浏览器中无效。我在 IE、Chrome 等中尝试了 jsfiddle.net/hzLwC - 不起作用。有什么想法吗?
    猜你喜欢
    • 2013-10-12
    • 2012-01-17
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多