tags:

views:

103

answers:

4

In a KeyDown event of a textbox, can i check for a range of keyCode

For eg:

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

How do it write this the correct way?

+1  A: 
if ((e.keyCode > 89 && e.keyCode < 98) || (e.keyCode > 103 && e.keyCode < 111))

or:

if ((e.keyCode >= 90 && e.keyCode <= 97) || (e.keyCode >= 104 && e.keyCode <= 110))
karim79
+1, but wouldn't `>=` and `<=` be more intuitive?
Philippe Leybaert
@Philippe Leybaert - edited to suit both tastes :)
karim79
A: 
if ((90 <= e.keyCode && e.keyCode <= 97) || (104 <= e.keyCode && e.keyCode <= 110))
Dominic Rodger
A: 
var myKeycodes = [1,2,3,4,5,6];
if(myKeycodes.indexOf(e.keyCode) != -1){
    // your keycode is in the array, do stuff
}
inkedmn
Won't work in IE.
Ionuț G. Stan
+5  A: 
var inInterval = function (code, min, max) {
    return code >= min && code <= max;
};

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

Or, a little bit nicer:

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
Ionuț G. Stan