【发布时间】:2016-08-11 14:19:53
【问题描述】:
我正在尝试设置外语键盘。我正在使用 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;}
});
当e.which 是65、68 和74 时有效,但不是73。
我怎样才能让它正常工作?
【问题讨论】:
-
仅供参考,
return false与e.preventDefault()和e.stopPropagation()相同。 -
你能做一个
console.log的e.which并检查它在执行 [ALT] + [I] 时显示的内容吗?使用这个JSFiddle,它适用于我的 chrome (Windows 10) -
@Jordumus:在您的 JSFiddle 上,我得到 18 + 229。这与我为 [ALT] + [u]、[ALT] + [e] 和 [ALT] + [ 得到的代码相同n]。
-
我对其进行了一些更改,它在 chrome 中运行良好。 here's my fiddle.
标签: javascript jquery macos keyboard-shortcuts