Me gustaría saber qué tecla de carácter se presiona de una manera compatible con todos los navegadores en Javascript puro.
event.key
le dará directamente el carácter prensado
Me gustaría saber qué tecla de carácter se presiona de una manera compatible con todos los navegadores en Javascript puro.
event.key
le dará directamente el carácter prensado
Respuestas:
JavaScript "claro":
<script type="text/javascript">
function myKeyPress(e){
var keynum;
if(window.event) { // IE
keynum = e.keyCode;
} else if(e.which){ // Netscape/Firefox/Opera
keynum = e.which;
}
alert(String.fromCharCode(keynum));
}
</script>
<form>
<input type="text" onkeypress="return myKeyPress(event)" />
</form>
JQuery:
$(document).keypress(function(event){
alert(String.fromCharCode(event.which));
});
keypress
evento, que le da un código de carácter, en lugar de keyup
o keydown
que le da un código clave.
e.key
todavía no tiene soporte completo para navegadores.
Hay un millón de duplicados de esta pregunta aquí, pero aquí va de todos modos:
document.onkeypress = function(evt) {
evt = evt || window.event;
var charCode = evt.keyCode || evt.which;
var charStr = String.fromCharCode(charCode);
alert(charStr);
};
La mejor referencia sobre eventos clave que he visto es http://unixpapa.com/js/key.html .
Más reciente y mucho más limpio: uso event.key
. ¡No más códigos numéricos arbitrarios!
NOTA: Las propiedades antiguas (
.keyCode
y.which
) están obsoletas.
node.addEventListener('keydown', function(event) {
const key = event.key; // "a", "1", "Shift", etc.
});
Si desea asegurarse de que solo se ingresen caracteres individuales, verifique key.length === 1
que sea uno de los caracteres que espera.
Tratar:
<table>
<tr><td>Key:</td><td id="key"></td></tr>
<tr><td>Key Code:</td><td id="keyCode"></td></tr>
<tr><td>Event Code:</td><td id="eventCode"></td></tr>
</table>
<script type="text/javascript">
window.addEventListener("keydown", function (e) {
//tested in IE/Chrome/Firefox
document.getElementById("key").innerHTML = e.key;
document.getElementById("keyCode").innerHTML = e.keyCode;
document.getElementById("eventCode").innerHTML = e.code;
})
</script>
* Nota: esto funciona en "Ejecutar fragmento de código"
Este sitio web hace lo mismo que mi código anterior: Keycode.info
**check this out**
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(document).keypress(function(e)
{
var keynum;
if(window.event)
{ // IE
keynum = e.keyCode;
}
else if(e.which)
{
// Netscape/Firefox/Opera
keynum = e.which;
}
alert(String.fromCharCode(keynum));
var unicode=e.keyCode? e.keyCode : e.charCode;
alert(unicode);
});
});
</script>
</head>
<body>
<input type="text"></input>
</body>
</html>
Una de mis bibliotecas favoritas para hacer esto de una manera sofisticada es Mousetrap .
Viene con una variedad de complementos, uno de los cuales es el record
complemento que puede identificar una secuencia de teclas presionadas.
Ejemplo:
<script>
function recordSequence() {
Mousetrap.record(function(sequence) {
// sequence is an array like ['ctrl+k', 'c']
alert('You pressed: ' + sequence.join(' '));
});
}
</script>
<button onclick="recordSequence()">Record</button>