【发布时间】:2014-04-23 22:04:52
【问题描述】:
诸如Alt + 0233 之类的组合键给出é。在我的在线表单中,我想使用Alt + e 或Ctrl + e 来生成é。我知道如何用 jQuery 做到这一点,但问题是 Alt + e 也与浏览器的编辑菜单相关联,因此打开了菜单。同样,Ctrl + e 也与其他一些浏览器功能相关联。使用Ctrl + ' + e 也会得到相同的结果。
我想知道是否有解决此问题的方法。有人试过类似的吗?
【问题讨论】:
诸如Alt + 0233 之类的组合键给出é。在我的在线表单中,我想使用Alt + e 或Ctrl + e 来生成é。我知道如何用 jQuery 做到这一点,但问题是 Alt + e 也与浏览器的编辑菜单相关联,因此打开了菜单。同样,Ctrl + e 也与其他一些浏览器功能相关联。使用Ctrl + ' + e 也会得到相同的结果。
我想知道是否有解决此问题的方法。有人试过类似的吗?
【问题讨论】:
你可以通过捕获击键和处理得到你需要的东西:
$('#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 以阻止事件冒泡到浏览器。
e.preventDefault()。
Ctrl + ' + e 来执行上述操作。我试过if (e.which == 101 && e.which == 39 && e.ctrlKey),但它似乎不起作用。在此处查看演示:jsfiddle.net/hzLwC
e.which 每次调用该函数时只有一个值,因此e.which == 101 && e.which == 39 永远不会为真。
e.preventDefault() 似乎只在 Firefox 中有效,而在其他浏览器中无效。我在 IE、Chrome 等中尝试了 jsfiddle.net/hzLwC - 不起作用。有什么想法吗?