2011-06-28 31 views
5

Busqué en Google y obtuve los siguientes códigos en la red. Sin embargo, cuando presiono una tecla del teclado, no se muestra un cuadro de alerta. Quiero saber qué personaje he pulsado en el cuadro de alerta. ¿Cómo puedo solucionar esto?¿Cómo puedo capturar los eventos del teclado desde qué teclas?

<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

tal vez será ser útil: http://stackoverflow.com/questions/302122/jquery-event-keypress-which-key-was-pressed – Kamil

Respuesta

7

Si desea obtener el carácter escrito, debe utilizar el evento en lugar keypress que el evento keydown. Algo así como lo siguiente:

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

obtendrá el código de tecla adecuada:

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

tratar este código jQuery

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

no puedo de la parte superior de mi cabeza pensar en una buena situación en la que el uso del método "en algún evento" de un elemento DOM para hacer frente a los eventos de ese elemento.

La mejor práctica es utilizar addEventListener (o attachEvent en las versiones anteriores de Internet Explorer) de esta manera:

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

Si quieres dar cuenta de attachEvent así:

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

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