2009-09-15 6 views
2

Dans un événement KeyDown d'une zone de texte, puis-je vérifier une gamme de codeTouchecodes événement KeyDown

Pour exemple:

if (e.keyCode == 90 to 97 || e.keyCode == 104 to 110) 

Comment l'écrire ce la bonne façon?

Répondre

6
var inInterval = function (code, min, max) { 
    return code >= min && code <= max; 
}; 

if (inInterval(e.keyCode, 90, 97) || inInterval(e.keyCode, 104, 110)) 

Ou, un peu plus agréable:

var interval = function (min, max) { 
    return { 
     min: min, 
     max: max, 
     contains : function (elem) { 
      return this.min <= elem && elem <= this.max; 
     } 
    }; 
}; 

interval(90, 98).contains(92); // true 
interval(90, 98).contains(15); // false 
1
if ((e.keyCode > 89 && e.keyCode < 98) || (e.keyCode > 103 && e.keyCode < 111)) 

ou:

if ((e.keyCode >= 90 && e.keyCode <= 97) || (e.keyCode >= 104 && e.keyCode <= 110)) 
+0

+1, mais ne serait pas '> =' et '<=' être plus intuitif? –

+0

@Philippe Leybaert - édité pour convenir aux deux goûts :) – karim79

0
if ((90 <= e.keyCode && e.keyCode <= 97) || (104 <= e.keyCode && e.keyCode <= 110)) 
0
var myKeycodes = [1,2,3,4,5,6]; 
if(myKeycodes.indexOf(e.keyCode) != -1){ 
    // your keycode is in the array, do stuff 
} 
+0

Ne fonctionnera pas dans IE. –

Questions connexes