Eso está sucediendo porque Si está utilizando el miembro keyCode
, por ejemplo, una minúscula 'a' y una mayúscula 'A' tienen el mismo código de clave, porque es la misma clave, pero un código de caracteres diferente porque el carácter resultante es diferente.
Para obtener el charCode, se debe utilizar el evento keypress
, y obtener el miembro de event.charCode
si está disponible, de lo contrario, se obtiene la event.keyCode
que por IE, en el evento de pulsación de tecla tiene la información correcta.
Dale un vistazo a la siguiente example:
document.onkeypress = function (e) {
e = e || window.event;
var charCode = e.charCode || e.keyCode,
character = String.fromCharCode(charCode);
alert(character);
};
con este código: cuando escribo "2" I Get charCode 0; código clave 50; personaje 2; cuando escribo Shift-2 recibo lo mismo, pero en mi cuadro de texto aparece "@". onkeypress evento no parece saber si la tecla Shift está abajo .... – Michiel
@CMS Muy informativo – Oliver