2013-03-05 112 views
-1

我想限制可以按下的键。如何检查数组是否包含元素

$('.txtComments').keydown(function (event) { 
    var keys = new Array(); 
    keys[0] = "8"; 
    keys[1] = "46"; 
    keys[2] = "37" 
    keys[3] = "39" 

    if(!(....)) //Check whether the keyCode is either of 8, 46, 37, or 39. 
    { 
    event.preventDefault(); 
    } 
}); 

感谢您的帮助

+1

'变种键= [8,46,37,39]; ',那么你可以使用'$ .inArray'和'event.which' – 2013-03-05 19:06:31

+0

尝试使用['$ .inArray'](http://api.jquery.com/jQuery.inArray/) – 2013-03-05 19:07:36

+0

不错。停止投票。谢谢。 – Richard77 2013-03-05 19:27:39

回答

2

所以实现这个很多:

只是硬编码:

var keyCode = event.which; 

if (keyCode != 8 && keyCode != 46 ...) 

或检查数组:

var keys = [8, 46, ...]; 
if (keys.indexOf(keyCode) < 0) 

或jQuery的等价物:

if ($.inArray(keyCode, keys) < 0) 

或检查的对象:

var keys = { 8: 1, 46: 1, ... } 
if (! (keyCode in keys)) // or if (!keys[keyCode]) 

或开关:

switch (keyCode) { 
    case 8: case 46: ... 
     // do nothing 
     break; 
    default: 
     event.preventDefault(); 
} 
3

最简单,最快在这里是使用一个对象作为地图:

var keys = {}; 
    keys[8] = true; 
    ... 

    if (!keys[event.which]) { 
    ... 

注意,我建议使用event.which代替键代码更好兼容性。

0

if(!keys.in_array(event.keyCode));

,改变你的​​到keypress

<script type="text/javascript"> 
// Benoit Asselin - http://www.ab-d.fr 
Array.prototype.in_array = function(p_val) { 
    for(var i = 0, l = this.length; i < l; i++) { 
     if(this[i] == p_val) { 
      return true; 
     } 
    } 
    return false; 
} 
</script> 
+0

代码添加对不起 – MIIB 2013-03-05 19:08:53

0

可以使用: -

var keys = []; 
    keys[8] = keys[4] = keys[37] = keys[39] = true; 

if(keys[keyval]){ 

} 
相关问题