2013-03-05 3 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' –

+0

Попробуйте использовать [' $ .inArray'] (http://api.jquery.com/jQuery.inArray/) –

+0

Будьте милы. Остановите голосование. Благодарю. – Richard77

ответ

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));

И изменить ваш keydown к 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

1

JQuery предоставляет метод утилиту jQuery.inArray(), чтобы проверить, если массив содержит значение.

0

Вы можете использовать: -

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

if(keys[keyval]){ 

} 
Смежные вопросы