2009-09-15 88 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