2012-09-17 11 views
36

Me gustaría saber el (los) rango (s) de JavaScript keyCode s que corresponden a caracteres tipables; o alternativamente, el rango de caracteres no tipificables (control) como retroceso, escape, comando, desplazamiento, etc., así puedo ignorarlos.Determinar si JavaScript e.keyCode es un carácter imprimible (sin control)

La razón por la que pregunto es llamando al String.fromCharCode() está dando como resultado caracteres impares para las teclas de control. Por ejemplo, obtengo "[" para el comando de la izquierda, "%" para la flecha de la izquierda. La rareza así.

+6

¿No crees que lo busqué en Google primero? Venga. ¿Incluso revisaste esos resultados o simplemente asumiste que soy un idiota? – devios1

+0

La palabra que está buscando es * imprimible *, muy probablemente. Además, parece que 'keyCode' es [dependiente del sistema y de la implementación] (https://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent#Key_values), que solo se traduce en problemas – Alexander

+0

¿Quiere decir" imprimible "? "¿?" Seguramente, por definición, cada código de tecla es "escribible" ... – nnnnnn

Respuesta

71

Keydown le dará el código de tecla de la tecla pulsada, sin ninguna modificación.

$("#keypresser").keydown(function(e){ 
    var keycode = e.keyCode; 

    var valid = 
     (keycode > 47 && keycode < 58) || // number keys 
     keycode == 32 || keycode == 13 || // spacebar & return key(s) (if you want to allow carriage returns) 
     (keycode > 64 && keycode < 91) || // letter keys 
     (keycode > 95 && keycode < 112) || // numpad keys 
     (keycode > 185 && keycode < 193) || // ;=,-./` (in order) 
     (keycode > 218 && keycode < 223); // [\]' (in order) 

    return valid; 
}); 

Sólo las teclas numéricas, teclas de letras, y la barra espaciadora tendrán códigos de teclas en correlación con String.fromCharCode ya que utiliza los valores Unicode.

La tecla presionada será la representación de caracteres del texto ingresado. Tenga en cuenta que este evento no se activará si no se "imprime" texto como resultado de la pulsación de tecla.

$("#keypresser").keypress(function(e){ 
    var charcode = e.charCode; 
    var char = String.fromCharCode(charcode); 
    console.log(char); 
}); 

http://jsfiddle.net/LZs2D/1/ Demostrarán cómo funcionan.

KeyUp se comporta de manera similar a KeyDown.

+4

La tecla de tabulación tiene un código clave de '9' – Shmiddty

+1

Muchos caracteres se omiten, p. ',' o '%' –

+0

@AlexanderElgin Comma está ahí, keycode 190.% es lo mismo que 5, keycode 52, con la tecla Shift presionada. – BobRodes

Cuestiones relacionadas