2009-09-15 231 views
2

在文本框的KeyDown事件,我可以檢查一個範圍的keyCodekeydown事件代碼

的對於如:

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

如何寫這個正確的方法是什麼?

回答

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

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

或者,一點點更好:

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

或:

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

+1,但不會'> ='和'<='更直觀? – 2009-09-15 14:00:43

+0

@Philippe萊伯特 - 編輯,以適應這兩種口味:) – karim79 2009-09-15 14:04:21

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

在IE中不會工作。 – 2009-09-15 14:02:15