0

我有一个 - 关于我的意见 - 非常疯狂的问题。逻辑似乎很简单:但它不起作用:)

我已经升级了脚本的一小部分:

jquery onkeyup 事件

该片段用于即时搜索建议。

请模糊输入字段,打开控制台(萤火虫)并按箭头向上和向下箭头。

您将在控制台上看到一个变量,每次按向上/向下箭头键 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 回答