【问题标题】:How to get LOCALIZED character on keypress?如何在按键上获取本地化字符?
【发布时间】:2011-07-22 03:47:13
【问题描述】:

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


(添加示例代码)

<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>

(例如online

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

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

【问题讨论】:

    标签: javascript localization dom-events keypress keyboard-layout


    【解决方案1】:

    使用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

    【讨论】:

    • 非常感谢您的回答。但我需要获取 localized 字符,受键盘布局影响的字符。
    • @Honza:除非我从根本上误解了,否则这正是您从我的代码中得到的。您的示例使用了keydown,这是错误的事件。只有keypress 事件可以为您提供有关所键入字符的可靠信息。
    • 哦,是的! Keypress 是解决方案!非常感谢!
    • 但是如果您想知道输入了 é 字符怎么办?
    • @jvacaq: keypress 给你。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-26
      • 2021-07-06
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多