Saltar al contenido

Determinar si JavaScript e.keyCode es un carácter imprimible (sin control)

Esta duda se puede tratar de diferentes formas, pero te damos la que para nosotros es la solución más completa.

Solución:

Keydown le dará el código clave del key prensado, sin ninguna modificación.

$("#keypresser").keydown(function(e) // ;=,-./` (in order)
        (keycode > 218 && keycode < 223);   // []' (in order)

    return valid;
);

solo el numero keys, carta keys, y la barra espaciadora tendrá códigos clave que se correlacionan con String.fromCharCode ya que utiliza valores Unicode.

Keypress será la representación charCode del texto ingresado. Tenga en cuenta que este evento no se activará si no se "imprime" ningún texto como resultado de la pulsación de una tecla.

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

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

KeyUp se comporta de manera similar a KeyDown.

Solo como fondo, el evento "presionar tecla" le dará una charCode propiedad cada vez que presiona un carácter key.

Editor.addEventListener('keypress', function(event){
    if (event.charCode) 
        //// character key
        console.log( String.fromCharCode(event.charCode) ); /// convert charCode to intended character.
     else 
        //// control key
    

Sin embargo, el evento "presionar tecla" no captura cada pulsación de tecla - varias keys disparar antes del evento "presionar tecla".

Por el contrario, el evento "keydown" capturará cada pulsación de tecla, pero no tiene un charCode propiedad. Entonces, ¿cómo podemos saber si es un personaje? key? Comprobando cada key trazo si el clave está dentro de los límites inferior y superior para múltiples rangos no es óptimamente eficiente. Sospecho que también hay problemas con los caracteres fuera del rango ASCII.

Mi enfoque es comprobar la duración del evento "key" propiedad. La "key" propiedad es una alternativa a "keyCode" para determinar qué key fue presionado. Para control keys, el "key"la propiedad es descriptivo (por ejemplo, "flecha derecha", "F12", "retorno", etc.). Para personaje keys, el "key"propiedad de un personaje key es solo el personaje (por ejemplo, "a", "A", "~", "", etc.). Por lo tanto, para cada carácter key, la longitud de la "key" propiedad tendrá una longitud de 1, mientras que los caracteres de control tendrán una longitud superior a 1.

Editor.addEventListener('keydown', function(event)
    if (event.key.length == 1) 
        //// character key
     else 
        //// control key
    
)

Me di cuenta de que todos los caracteres con una longitud de 1 ('A', 'B', número, símbolo) se pueden imprimir, así que solo los uso. También uso esta solución para caracteres no ingleses:

if(e.key.length==1)
    print();

Te mostramos las comentarios y valoraciones de los usuarios

Acuérdate de que tienes la capacidad de agregar una reseña si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *