2011-10-05 3 views
1

J'essaye de mettre en place des keycodes pour une application sur laquelle je travaille mais ça me rend vraiment fou. J'essaie de mettre en place des keycodes qui diraient, à partir de keyCode 65 à 91, 44, 47 et quelques autres, fonctionnent.jQuery/JS Keycodes: Plusieurs keycodes dans une instruction IF

J'ai donc ceci:

var e = event || evt; 
if ((e.keyCode > 65 || e.Keycode < 91)){ 
    // Do function 
} 

qui travaille trouver. Maintenant, si j'essaie d'ajouter un autre code clé, cela ne fonctionne pas. C'est ce que j'ai essayé:

if ((e.keyCode > 65 || e.Keycode < 91) && (e.keyCode == 44) && (e.keyCode == 47)){ 

Est-ce que quelqu'un me aider à ajouter différentes keycodes dans une instruction If?

Merci beaucoup

+0

Are yo Êtes-vous sûr que ce n'est pas lié à la syntaxe? Vous semblez utiliser 'e.Keycode <91' et' e.keyCode> 65'? – JackWink

+2

Lisez l'expression à haute voix pour voir si cela a du sens. "Si le code est entre 65 et 91, et il est égal à 44, et il est égal à 47, alors faites ce qui suit: ..." Fondamentalement, vous devriez remplacer ces opérateurs '&&' par '||'. – Pointy

+0

(e.keyCode> 65 || e.Keycode <91) est valide pour toutes les valeurs de code-clé possibles. Vous devriez revoir votre logique booléenne. – Andri

Répondre

3

Essayez cette

if (
    // get all the keys between 65-90 
    (e.keyCode >= 65 && e.keyCode <= 90) 
    // or 44 or 47 
    || e.keyCode == 44 || e.keyCode == 47) 
{ 
    // do stuff 
} 

Si la logique conditionnelle vous trébucher, je pense que vous pourriez être mieux servis en pensant les chiffres que vous voulez inclure (pas exclure). Brisez-les en rangs et placez chaque rang sur sa propre ligne. Commençons avec le code pseudo:

if 
    // keys between 31-47 
    // or keys between 58-90 
then 
    // do stuff 
end 

Ensuite, remplissez les conditions suivantes:

if (
    // keys between 31-47 
    (e.keyCode >= 31 && e.keyCode <= 47) 

    // or keys between 58-90 
    || (e.keyCode >= 58 && e.keyCode <= 90) 
) 
{ 
    // do stuff 
} 
+0

Au lieu de poser une nouvelle question. Pouvez-vous me taper une méthode rapide, sauf? J'ai essayé ceci: si ((e.keyCode> = 31 || e.Keycode <= 90) && (e.keyCode> = 48 || e.Keycode <= 57)) qui devrait inclure de 31 à 90 sauf de 48 à 57 mais ne fonctionne pas. Merci – jQuerybeast

+0

@jQuerybeast J'ai ajouté quelques informations supplémentaires qui pourraient vous être utiles –

-1
if ((e.keyCode > 65 && e.Keycode < 91) || e.keyCode == 44 || e.keyCode == 47){ 
    //do stuff 
} 
+0

Ne fonctionne pas du tout. – jQuerybeast

+0

Pas tout à fait @Andri - ce ne sera jamais vrai, comme écrit, car ni 44 ni 47 ne sont entre 65 et 91. – Pointy

+0

aïe! Je pensais que @jQuerybeast commençait à être fatigué. Je vois maintenant que je dois immédiatement arrêter de coder pour aujourd'hui, ou risquer de le regretter demain.Fixé btw. – Andri

0

Si vous voulez que tout 31-90, sauf pour ceux de 48 à 57:

if (e.keyCode >= 31 && e.keyCode <= 90 && !(e.keyCode >= 48 && e.keyCode <= 57)) { 
    // whatever 
} 

Maintenant que pourrait être écrit de manière équivalente en tant que:

if (e.keyCode >= 31 && e.keyCode <= 47 || e.keyCode >= 58 && e.keyCode <= 90) { 
    // whatever 
} 
+0

Avez-vous essayé cela? Parce que ça ne semble pas fonctionner. Merci beaucoup monsieur – jQuerybeast

+0

Je suis assez sûr que cela devrait fonctionner, mais je n'ai aucune idée de ce que fait le reste de votre code. Vous devez savoir que ** les codes de clé ** ne sont pas les mêmes que les ** codes de caractères **. Si vous attendez des événements "keydown" et "keyup" pour vous donner des codes de caractères ASCII/UTF, eh bien, ils ne le seront pas. – Pointy

+0

Eh bien, j'étais juste en train d'alerter le code clé et ça ne fonctionnait pas. Pour quelque raison que cela a fonctionné: if ((e.keyCode> = 58) || (e.keyCode <= 45) || (e.keyCode == 47)). J'appelle tout plus grand que 58, moins de 45 et 47 pour appeler l'alerte. Donc, les chiffres et la période ne sont pas en alerte. Merci quand même – jQuerybeast

Questions connexes