2009-05-17 7 views
11

Je souhaite désactiver les utilisateurs pour entrer un caractère dans un champ de saisie de texte HTML qui n'est pas une lettre ou un nombre.Comment obtenir la valeur de pression d'un objet d'événement dans jQuery

Cette fonctionnalité exacte peut être vu sur la page d'inscription de Twitter (champ d'identification) https://twitter.com/signup.

J'essaie d'écrire ceci dans jQuery. Mais je dois être capable d'attraper la valeur de l'événement keypress entrant pour tester quelle touche a été pressée et si sa valeur est acceptable.

Voici le code:

<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> 

Répondre

32

Vous pouvez utiliser la propriété « qui » de l'objet d'événement pour capturer le code d'activation. Vous pouvez utiliser quelque chose comme code suivant pour obtenir le caractère correspondant -

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

Voir le lien http://api.jquery.com/keypress/ pour une explication détaillée.

+0

lien corrigé: http://api.jquery.com/keypress/ Voir aussi http://api.jquery.com/event .which/pour plus d'informations sur event.which –

+0

whewww gentil homme :) – Nav

2

Lorsqu'un utilisateur appuie sur une touche, le code ASCII correspondant est ce qui est envoyé dans l'événement. Utilisez le champ e.which

Ainsi, votre condition pourrait ressembler à ceci:

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

Il y a beaucoup de façons différentes que vous pouvez écrire le conditionnel. Peut-être en utilisant le mappage des caractères autorisés dans un tableau.

Pour référence, Majuscules: 65-90 Minuscules: 97-122

Vous devez réaliser que cela va rendre votre application ne fonctionne que pour les personnes dactylographier en anglais en utilisant l'ensemble standard ASCII. Les utilisateurs internationaux seront incapables d'écrire dans votre champ de formulaire, car ces codes-clés sont en dehors de la plage ASCII standard et utilisent un codage différent. Juste quelque chose à considérer.

Codes 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'); 
    }); 

UN FAITES L'ESSAI

Questions connexes