2009-05-17 22 views
11

Quiero deshabilitar a los usuarios para que ingresen un carácter en un campo de entrada de texto HTML que no es una letra o número.Cómo obtener el valor de la tecla presionada de un objeto de evento en jQuery

Esta funcionalidad exacta se puede ver en la página de registro de Twitter (campo de nombre de usuario) https://twitter.com/signup.

Im tratando de escribir esto en jQuery. Pero necesito poder tomar el valor del evento de pulsación de tecla para probar qué tecla se presionó y si su valor es aceptable.

Aquí está el código:

<input type="text" id="username" name="username" /> 

<script type="text/javascript"> 
$("#username").keypress(function(event){ 

// Get the keypress value 
// ...? 

// If the keypress value is illegal then disable it 
if (...){ 
    event.preventDefault(); 
} 

}); 
</script> 

Respuesta

32

Puede utilizar el 'que' la propiedad del objeto de evento para capturar el código clave. Se puede usar algo como siguiente código para obtener el correspondiente carácter -

 
var c = String.fromCharCode(e.which); 

Ver el enlace http://api.jquery.com/keypress/ para una explicación detallada.

+0

enlace Corregido: http://api.jquery.com/keypress/ Véase también http://api.jquery.com/event .which/para más información sobre event.which –

+0

whewww nice man :) – Nav

2

Cuando un usuario presiona una tecla, el código ASCII correspondiente es el que se envía en el evento. Utilice el campo e.which

Así que su condición podría ser algo como esto:

if (e.which > 47 && e.which < 58) 
{ 
    // it is a number 
} 

Hay muchas maneras diferentes que usted podría escribir el condicional. Posiblemente mediante el mapeo de los caracteres permitidos en una matriz.

Como referencia, mayúsculas: 65 - 90 Minúsculas 97 - 122

Usted debe darse cuenta de que esto hará que su aplicación sólo funciona para las personas a escribir en Inglés utilizando el conjunto ASCII estándar. Los usuarios internacionales no podrán escribir en el campo de su formulario, porque esos códigos clave están fuera del rango ASCII estándar y usarán una codificación diferente. Solo algo a considerar.

códigos ASCII: http://www.petefreitag.com/cheatsheets/ascii-codes/

0
var ako =''; 
    var novalue = ''; 
    jQuery('html').keypress(function(event){ 
     var valuekey = event.charCode; 
     ako = String.fromCharCode(event.which); 
     jQuery('.a').each(function(){ 
      var cn = jQuery(this).html(); 
      if(ako == cn){ 
       jQuery(this).hide('explode',{},'10000').remove(); 
      } 
      novalue +=cn; 
     }); 
     //alert(novalue); 
     jQuery("#cn").animate({width:'400px',border:'1px solid pink'},'slow'); 
    }); 

prueba este

Cuestiones relacionadas