Jquery按键事件忽略箭头键

Ath*_*tos 10 html jquery jquery-ui

我有一个输入框,就像一个搜索(类似于Facebook).我在按键事件上使用jquery工作正常.问题是我无法使用箭头键向下滚动结果集,每次按下其中一个结果时,搜索结果将被重新生成.那么可以忽略箭头键/ shift/tab等.

http://jsfiddle.net/UU6KG/

$("#search-form .search-terms").on("keypress", function(){
       $("#search-items #autocom").fadeIn();
    });
Run Code Online (Sandbox Code Playgroud)

谢谢

the*_*man 29

您需要过滤掉箭头键代码(37,38,39,40),试试这个:

请注意function(e)代替function()- 这允许您获取事件,因此也可以获取密钥代码.

$('#search-form .search-terms').on('keydown', function(e){
    // get keycode of current keypress event
    var code = (e.keyCode || e.which);

    // do nothing if it's an arrow key
    if(code == 37 || code == 38 || code == 39 || code == 40) {
        return;
    }

    // do normal behaviour for any other key
    $('#search-items #autocom').fadeIn();
});
Run Code Online (Sandbox Code Playgroud)

单击以获取密钥代码列表

来自keypress/ keyup/ 的文档的说明keydown:

请注意,keydown和keyup提供一个代码,指示按下哪个键,而keypress指示输入了哪个字符.例如,小写的"a"将通过keydown和keyup报告为65,但是按key按97报告.所有事件都将大写的"A"报告为65.由于这种区别,当捕获箭头键,.keydown()或.keyup()等特殊键击时是更好的选择.

keypress事件几乎适用于所有情况,但使用谨慎keyupkeydown因为某些浏览器(我认为某些较旧版本的Firefox)未使用该事件检测某些键(例如箭头键)keypress.