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 コンソールに "Code: 53; Key: 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);
};

JavaScript のキー処理について説明している Jan Wolter の優れたページへの私の通常のリンクは次のとおりです: 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 に答える