如何用jQuery捕获altKey + i,u,e,n?

twh*_*mon 10 javascript macos jquery keyboard-shortcuts

我正在尝试为外语设置键盘.我正在使用jQuery将按键转换成外来字符.我在用:

  • A - Z
  • ALT + A - Z
  • SHIFT + A - Z
  • ALT+ SHIFT+A - Z

    我的代码适用于所有这些,除了这4个:

    • ALT + I
    • ALT + U
    • ALT + E
    • ALT + N

它工作正常,在Firefox,但在Chrome和Safari(我使用的是Mac)我得到这些重音符号- ,ˆ,,¨ -而不是一个应该进入textarea的外来字符.´˜

以下是一些代码:

function type(e, char, textArea) {
    e.preventDefault();
    var start = textArea[0].selectionStart;
    var end = textArea[0].selectionEnd;
    var len = textArea.val().length;
    var newPos = start + char.length;
    textArea.val(textArea.val().substring(0, start) + char + textArea.val().substring(end, len));
    textArea[0].setSelectionRange(newPos, newPos);
}
$('textarea').keydown(function(e) {
        var textArea = $(this);
        if (e.which == 65 && e.altKey) {type(e, '?', textArea);return false;}
        if (e.which == 68 && e.altKey) {type(e, '?', textArea);return false;}
        if (e.which == 73 && e.altKey) {type(e, '?', textArea);return false;}
        if (e.which == 74 && e.altKey) {type(e, '???', textArea);return false;}
});
Run Code Online (Sandbox Code Playgroud)

e.which65,6874,但不是73.
我怎样才能让它正常工作?

小智 0

我在 Mac 上使用 Chrome,您的 jsFiddle 示例https://jsfiddle.net/s0fmpgaj/正在运行。当我按下它时ALT + SHIFT + i ,它会返回您定义的特殊字符。