2011-05-24 5 views
4

Je voudrais configurer une page d'accueil en appuyant sur n'importe quel caractère (minuscule ou majuscule) ou n'importe quel nombre redirige l'utilisateur vers le login page, car la page d'accueil elle-même n'a rien Pour ce faire, il faut taper.Détecter si un caractère ou un nombre a été tapé

Ma première tentative était la suivante:

document.onkeyup = function() { 
    document.location.href = "/login" 
} 

Cela fonctionne, mais cela fonctionne pour toutes les clés , y compris les curseurs, onglet, et même de verrouillage des majuscules. Comment puis-je restreindre cette fonction afin qu'elle ne réponde qu'aux caractères et aux nombres?

Répondre

4

Lorsque l'événement se produit, le code de clé est envoyé en tant qu'argument d'événement. Nous pouvons l'utiliser pour déterminer si un caractère ou une touche numérique a été enfoncé. Comme ceci:

document.onkeyup = function(e) { 

    if ((e.keyCode >= 65 && e.keyCode <= 90) || 
     (e.keyCode >= 97 && e.keyCode <= 122) || 
     (e.keyCode >= 48 && e.keyCode <= 57)){ 
     document.location.href = "/login"; 
    } 
}; 

Pour référence, le nombre utilisé ci-dessus sont des codes ASCII, vous pouvez trouver la liste complète ici: http://asciitable.com/. 48-57 sont des nombres de 0-9, 65-90 sont des caractères majuscules, et 97-122 sont des caractères minuscules.

Vous pouvez trouver un exemple JS Fiddle très simple ici: http://jsfiddle.net/jpYyg/. N'oubliez pas de cliquer dans le panneau "Résultat" (en bas à droite) avant d'appuyer sur n'importe quel bouton ou cela ne fonctionnera pas!

HTH

+0

Excellente réponse, merci Karl. – sscirrus

0
document.onkeyup = function(event) { 
    if (###event.keyCode corresponds to a letter or numeral###) 
     document.location.href = "/login"; 
    else 
     event.preventDefault(); 
} 

Vous pouvez également voir la démo pour http://api.jquery.com/keypress/ si vous souhaitez vous simplifier la vie avec jQuery.

+0

'event.keyCode' sera toujours un nombre. – Shaz

+1

Le '### event.keyCode est un caractère ou numéro ###' est la partie principale de ma question. – sscirrus

1
<script type="text/javascript"> 
    document.onkeyup = function (e) { 
     var patt =/\w/g; 
     var key = String.fromCharCode(e.keyCode); 
     if (patt.test(key)) 
      document.location.href = "/login"; 
    } 
</script> 
Questions connexes