8

ユーザーがページの一部(div)をクリックした後、ユーザーからの入力をキャプチャする必要があるページがあります。これが私のコードです:

<html>
<body>
<div style="background-color: lightpink" onkeydown="onkeydown1(event)" tabindex="-1">
click me, then press a key
</div>

<script type="text/javascript">
function onkeydown1(event)
{
    alert(event.charCode);
}
</script>
</body>
</html>

実際の動作をご覧ください:http://jsfiddle.net/WRwBF/

FireFoxはデフォルトでdivに「フォーカスを持たせる」ことを許可していないため、これまでに到達するのに最も長い時間がかかりました。最終的に、divのtabindexを設定すると、フォーカスが合って、onkeydownイベントが機能することがわかりました。

私の問題は、divをクリックしてキーを押すと、どのキーが押されたかに関係なく、値「0」が返されることです。なぜこれが発生するのでしょうか。どうすれば修正できますか?

私はあなたが与えることができるかもしれないどんな指導にも大いに感謝します!

4

3 に答える 3

7

http://unixpapa.com/js/key.htmlをお読みください。

概要:keypressイベントを使用することが、入力された文字に関する信頼できる情報を取得する唯一の方法です。以下は、ほとんどの状況で文字を入力するのに十分です。

var charCode = (typeof event.which == "undefined") ? event.keyCode : event.which;
alert("Character typed: " + String.fromCharCode(charCode));
于 2012-06-24T00:11:10.237 に答える
1

代わりにevent.keyCodeまたはevent.which(ブラウザによって異なります)を使用してください

于 2012-06-23T23:41:16.400 に答える
0

tabindexプロパティでフォーカスを取得し、それにタブで移動できますが、divがキーイベントを受信するためのインターフェイスはありません。

それらはテキスト入力とウィンドウ自体から取得します。

于 2012-06-24T00:14:36.463 に答える