17

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

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>
4

3 回答 3

38

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

if ($.inArray(key, [37, 38, 39, 40]) >  -1)
于 2013-03-25T20:41:44.960 回答
3

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

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

}
于 2013-03-25T20:48:07.160 回答
3

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

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

数组

于 2013-03-25T20:46:43.277 回答