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

jQueryのinArray関数は、値のインデックスを返します。左矢印キー(37)の場合、0を返し、falseとして解釈されます。コードを>=0に変更する必要があります

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

inArray

于 2013-03-25T20:46:43.277 に答える
3

$ .inArrayメソッドは、要素が配列内にある場合はそのインデックスを返し、配列内にない場合は-1を返すため、if条件として使用することはできません。次のように変更します。

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

}
于 2013-03-25T20:48:07.160 に答える