2011-06-28 70 views
5

我在Google上搜索並獲得了以下代碼。但是,當我按下鍵盤按鍵時,它不會顯示一個警告框。我想要得到我在警告框中按下的哪個角色。我該如何解決?如何捕獲鍵盤事件來自哪個鍵?

<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

或許它會有幫助:http://stackoverflow.com/questions/302122/jquery-event-keypress-which-key-was-pressed – Kamil

回答

7

,你必須願意使用的keypress事件比​​事件。像下面這樣:

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)); 
    } 
}; 
1

你會得到相應的關鍵代碼:

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

如果你想獲得字符鍵入試試這個jQuery代碼

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

我不能把我的頭頂部想到的良好局面,其中使用DOM元素的「上的一些事件」的方法來處理這個元素上的事件。

最好的做法是使用addEventListener(或attachEvent在舊版本的Internet Explorer),像這樣:

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

如果你想佔attachEvent還有:

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

function alertKeyCode(e) { 
    alert(e.keyCode); 
}