2011-06-28 6 views
5

私はグーグルで次のコードを取得しました。ただし、キーボードのキーを押すと、アラートボックスが表示されません。私は警告欄に押された文字を取得したい。これをどうやって解決するのですか?どのようにキーボードイベントをキャプチャすることができますか?

<script type="text/javascript"> 

var charfield=document.getElementById("char") 
charfield.onkeydown=function(e){ 
var e=window.event || e; 
alert(e.keyCode); 
} 

</script> 
</head> 

<body id="char"> 

</body> 
</html> 
+0

それがされます:あなたにもattachEventを占めたい場合

charfield.addEventListener('keydown', function (e) { alert(e.keyCode); }, false); 

ベストプラクティスはそうのような(古いバージョンのInternet ExplorerまたはattachEventaddEventListenerを使用することです助けてください:http://stackoverflow.com/questions/302122/jquery-event-keypress-which-key-was-pressed – Kamil

答えて

7

このjqueryのコードを試してみてください

charfield.onkeydown=function(evt){ 
    var keyCode = (evt.which?evt.which:(evt.keyCode?evt.keyCode:0)) 
    alert(keyCode); 
} 
1

あなたは適切なキーコードを取得します:あなたは文字が入力された取得したい場合は、あなたではなくkeypressイベントを使用する必要があります

$("body").keypress(function(e){ 
     alert(e.which); 
    }); 
5

を​​イベントよりも優先されます。以下のような何か:

var charfield = document.getElementById("char"); 
charfield.onkeypress = function(e) { 
    e = e || window.event; 
    var charCode = (typeof e.which == "number") ? e.which : e.keyCode; 
    if (charCode > 0) { 
     alert("Typed character: " + String.fromCharCode(charCode)); 
    } 
}; 
0

私はできない私の頭の上から、その要素のイベントに対処するためのDOM要素の「いくつかのイベントで」メソッドを使用するためにここで良い状況を考えます。たぶん

(function (useListen) { 
    if (useListen) { 
     charfield.addEventListener('keydown', alertKeyCode, false); 
    } else { 
     charfield.attachEvent('onkeydown', alertKeyCode); 
    } 
})(charfield.addEventListener); 

function alertKeyCode(e) { 
    alert(e.keyCode); 
} 
関連する問題