8

我需要在事件中获得本地化的字符。keypress例如:在捷克语键盘上,我需要 ř 而不是 5 个字符(键码 53)(请参阅捷克语键盘布局)。有没有其他方法可以获取字符并且不使用文本输入和阅读值?换句话说,有什么方法可以从尊重当前用户键盘布局的事件对象中获取字符?


(添加示例代码)

<html>
<body>
<script language="JavaScript">
function onLoad() {
    console.log(document.getElementById("test"));
    document.getElementById("test").onkeydown = function(event) {
                console.log("Code: "+event.keyCode+"; Key: "+String.fromCharCode(event.keyCode));
        }
}
</script>
<body onLoad="onLoad();">
    <input id="test">
</body>
</html>

(在线示例)

当您尝试此代码并按ř-key 时,您将在 Firebug 控制台中看到“代码:53;键:5”。我需要得到“ř”而不是“5”。

我认为这个“问题”出现在所有非英文键盘上。

4

2 回答 2

14

无论键盘布局如何,使用该keypress事件都会为您提供键入的字符。

document.onkeypress = function(evt) {
    evt = evt || window.event;
    var charCode = evt.which || evt.keyCode;
    var charTyped = String.fromCharCode(charCode);
    alert("Character typed: " + charTyped);
};

这是我通常指向 Jan Wolter 记录 JavaScript 密钥处理的优秀页面的链接:http: //unixpapa.com/js/key.html

于 2011-03-24T14:12:27.773 回答
1

并确保您使用的是“keypress”,而不是“keydown”事件。

如果你使用 'keydown' String.fromCharCode(event.keyCode || event.which),它不会返回一个本地化的字符。至少这对我来说在带有 Chrome / FF 的 OS X 上是个问题。

于 2016-10-26T09:48:32.693 回答