jQuery.inArray()没有按预期工作

时间:2013-03-25 20:40:48

标签: jquery

我在这里做错了什么?我的想法是,我可以将箭头按键与其他任何东西分开,但每次按键都会触发警告“你按了一个箭头键”。任何帮助都会很棒!

jsFiddle此处或:

<input id='foo'>

<script>

$('#foo').keyup(function (e) {
    var key = e.keyCode;
    if ($.inArray(key, [37, 38, 39, 40])) {
        alert('you pressed an arrow key');
    } else {
        alert("you didn't press an arrow key");
    }
});

</script>

3 个答案:

答案 0 :(得分:30)

你必须检查它是否返回索引&gt; -1。如果数组中没有出现键,则索引为-1:

if ($.inArray(key, [37, 38, 39, 40]) >  -1)

答案 1 :(得分:3)

jQuery inArray函数返回值的索引。对于左箭头键(37),它返回0并且它被解释为false。您应该将代码更改为&gt; = 0

   if ($.inArray(key, [37, 38, 39, 40]) > -1) 

inArray

答案 2 :(得分:3)

$ .inArray方法返回元素的索引(如果它在数组中),如果它不在数组中,则返回-1,因此不能将其用作if条件。将其更改为:

if($.inArray(key, [37, 38, 39, 40]) >= 0)) {

}