关于javascript:如何检查数组是否包含元素

How to check whether an array contains an element

本问题已经有最佳答案,请猛点这里访问。

我想限制可以按的键。

1
2
3
4
5
6
7
8
9
10
11
12
$('.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
2
3
4
5
6
   var keys = {};
   keys[8] = true;
   ...

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

请注意,我建议使用event.which而不是keycode以获得更好的兼容性。


实现这一点的方法有很多种:

只是硬编码:

1
2
3
var keyCode = event.which;

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

或检查阵列:

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

或jquery等效工具:

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

或检查对象:

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

或开关:

1
2
3
4
5
6
7
switch (keyCode) {
    case 8: case 46: ...
        // do nothing
        break;
    default:
        event.preventDefault();
}


jquery提供了实用方法jQuery.inArray()来检查数组是否包含值。


你可以使用:

1
2
3
4
5
6
   var keys = [];
    keys[8] = keys[4] = keys[37] = keys[39] = true;

if(keys[keyval]){

}

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

把你的keydown改成keypress

1
2
3
4
5
6
7
8
9
10
<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;
}