2012-06-23 13 views
6

ページの一部(div)をクリックした後にユーザーからの入力をキャプチャする必要があるページがあります。ここに私のコードは次のとおりです。event.charCodeは常に0を返します

<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"が返されることです。なぜこれが起こっているのでしょうか?どうすれば修正できますか?

私は非常にあなたが与えることができるかもしれないご指摘ありがとう!

+0

短いバージョンは:[ブラウザはダム](http://www.quirksmode.org/js/keys.html)です。そのQuirksModeの記事はすべてを説明する必要があります。基本的に、 'charCode'を移植可能にするには' keyPress'イベントを検出し、 'evt.charCode || evt.keyCode' – millimoose

答えて

4

(ブラウザによって異なります)。

要約:タイプされた文字に関する信頼できる情報を得るには、keypressイベントを使用する唯一の方法です。以下は、あなたがほとんどの状況で入力した文字を取得するのに十分良いだろう。

var charCode = (typeof event.which == "undefined") ? event.keyCode : event.which; 
alert("Character typed: " + String.fromCharCode(charCode)); 
0

使用event.keyCodeまたはevent.which読むhttp://unixpapa.com/js/key.html代わり

+1

'event.keyCode'は、小さな文字と大文字を区別できるようにしたい場合には、できないかもしれません。 (または修飾キーを無視したい) – millimoose

0

あなたはtabIndexプロパティに焦点を当てました、そしてあなたはそれにタブをすることができますが、キーを受け取るためのdivのためのインターフェースがありませんイベント。

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

+0

いいえ。要素がフォーカスを受け取ると、キーイベントを発生させることができます。 http://jsfiddle.net/timdown/rLfF5/ –

関連する問題