0

私には - 私の意見に関して - 本当にクレイジーな問題があります。ロジックは非常に簡単なようです:しかし、機能しません:)

スクリプトの一部をアップしました。

jquery onkeyupイベント

スニペットは、インスタント検索の提案用です。

入力フィールドをぼかし、コンソール (firebug) を開き、arrowUp と arrowDown を押してください。

コンソールに変数が表示されます。この変数は、上矢印キーまたは下矢印キーを 1 ポイント押すたびに追加または削除されます。

しかし、方向を「逆」にすると (例: arrowDown -arrowDown -arrowDown - arrowUp)、カウンターは正しく機能しないようです。

var c = 0;
$('#h7_3').keypress(function(e) {

    console.log('--------');
    console.log('c = ' + c);
    console.log('Key: = ' + e.keyCode);
    console.log('--------');

    if(e.keyCode == 38 || e.which == 38){ //38 = arrowUp
        e.preventDefault();
    }
    if(e.keyCode == 40 || e.which == 40) { //40 = arrowDown
        e.preventDefault();
    }
});

$('#h7_3').keyup(function(e) {
    if(e.keyCode == 38 || e.which == 38){ //38 = arrowUp
        c--;
    } else if(e.keyCode == 40 || e.which == 40) { //40 = arrowDown
        c++;
    }
});

いくつかのヒントについて本当に嬉しいです:-)

こんにちは、クリス

4

1 に答える 1

0

コードを ready() 関数でラップする必要があります。デフォルトを防止しているため、後者の関数はトリガーされません。また、jQuery は e.which を正規化します。

$(function() {
    var c = 0;
    $('#h7_3').on('keyup', function(e) {
        if (e.which == 38 || e.which == 40) {
            c = e.which == 38 ? c-1 : c+1;
            console.log('--------');
            console.log('c = ' + c);
            console.log('Key: = ' + e.which);
            console.log('--------');
            e.preventDefault();
        }
    });
});

フィドル

于 2012-08-06T18:32:34.880 に答える