jQuery keyup + counter的问题

时间:2012-08-06 18:21:06

标签: jquery keyup

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

我已经提升了剧本的一小部分内容:

jquery onkeyup event

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

请模糊输入字段,打开控制台(firebug)并按arrowUp和arrowDown。

您将在控制台上看到一个变量,每次按下arrowUp / Down键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++;
    }
});

我会非常高兴的一些提示: - )

问候,克里斯

1 个答案:

答案 0 :(得分: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();
        }
    });
});

FIDDLE