2013-03-05 153 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]){ 

} 
相關問題