如何在JS事件监听器中获得正确的按键语言和案例?

mik*_*kel 1 javascript unicode jquery javascript-events character-encoding

我有以下jQuery事件监听器来获取在文本框中按下的键:

$("#theInput").keyup(function (e) {
    var charCode = e.keyCode || e.which;
    alert(charCode);
    /* rest of the code */
});
Run Code Online (Sandbox Code Playgroud)

我的问题是如何准确地获取键入的字母的代码.例如,如果我按下'a'键,它将提醒'65' - 无论是"a"还是"A".如果我将输入语言切换为外语(例如日语,中文,泰语)并按"a"键,它仍会返回"65"而不是代码,以便让我知道外来字符.

有没有办法解决这个问题,所以它给出了正确的语言和字母大小写?

nnn*_*nnn 7

你有没有看过关于和事件如何工作的jQuery doco?它们应该返回一个关键代码(而不是字符代码),而不考虑当时是否关闭了转换,尽管该对象确实有一个属性来告诉您转换是否已关闭.让您区分与同一字符关联的不同键,以便您可以判断是否通过数字键盘输入了数字.keyupkeydowneventshiftKeykeyup

你想要的事件是keypress,它返回一个区分大小写的字符代码.虽然我已经说过我不确定它是如何用于外语的,但无论如何整个方法都不允许用户通过从剪贴板粘贴来输入其他文本,这是你需要考虑的其他东西.

(顺便说一下,jQuery规范了event.which属性,所以你不需要先打扰一下event.keyCode.)