jQuerys keyup和x2B的问题;柜台

jQuerys keyup和x2B的问题;柜台,jquery,keyup,Jquery,Keyup,关于我的观点,我有一个非常疯狂的问题。逻辑似乎很简单:但它不起作用:) 我增加了脚本的一小部分: 该片段用于即时搜索 请模糊输入字段,打开控制台(firebug),然后按向上箭头和向下箭头 您将在控制台上看到一个变量,每次按箭头向上/向下键1时,该变量都应添加或删除 但如果“反转”方向(例如箭头向下-箭头向下-箭头向下- (向上箭头)计数器似乎工作不正常 var c = 0; $('#h7_3').keypress(function(e) { console.log('-------

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

我增加了脚本的一小部分:

该片段用于即时搜索

请模糊输入字段,打开控制台(firebug),然后按向上箭头和向下箭头

您将在控制台上看到一个变量,每次按箭头向上/向下键1时,该变量都应添加或删除

但如果“反转”方向(例如箭头向下-箭头向下-箭头向下- (向上箭头)计数器似乎工作不正常

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++;
    }
});
我真的很高兴听到一些提示:-)


您好,Chris

您需要将代码包装在ready()函数中,因为您正在阻止默认值,所以后一个函数不会被触发。此外,jQuery规范化了e.net,其中:

$(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();
        }
    });
});

我认为代码工作正常,按键事件在向上键事件之前触发,因此在这种情况下,您可以在日志中找到递增或递减的值。