Javascript 谷歌自动完成-禁用箭头键

Javascript 谷歌自动完成-禁用箭头键,javascript,jquery,Javascript,Jquery,我正在做一个项目,需要过滤掉从PlacesAPI返回的结果。我是通过隐藏函数来实现的 $(object).hide(); 但是,如果用户使用箭头键滚动浏览结果,结果将显示在输入中 我试图做的是禁用该输入框的箭头键导航 我尝试过使用keydown事件检查,但是箭头键导航仍然有效 $('#search').bind('keydown', function(e) { var key = (e.keyCode ? e.keyCode : e.which);

我正在做一个项目,需要过滤掉从PlacesAPI返回的结果。我是通过隐藏函数来实现的

$(object).hide();
但是,如果用户使用箭头键滚动浏览结果,结果将显示在输入中

我试图做的是禁用该输入框的箭头键导航

我尝试过使用keydown事件检查,但是箭头键导航仍然有效

$('#search').bind('keydown', function(e) {
            var key = (e.keyCode ? e.keyCode : e.which);
            if(key == 40 || key == 38) {
                e.stopPropagation();
                return false;
            }
            return true;
        });
有什么我遗漏的吗?我也尝试过使用bindFirst插件- 试试看

保留对禁用功能的引用,并在准备启用时解除绑定

例如

var arrKey = new Array(37, 38, 39, 40);
var disableArrowKeys = function(e) {
    if ($.inArray(e.keyCode, arrKey)>=0) {
        e.preventDefault();
    }
}


$(document).keydown(disableArrowKeys);

// When you are ready to enable, Unbind the function.

$(document).unbind('keydown', disableArrowKeys);

对于所有有同样问题的人,我发现了以下几点

绑定事件在google事件绑定之前激发。所以最终解决我问题的是-

$('#search').bind('keydown', function (event) {
 setTimeout(function() {
   // do things here
   $('.pac-item').removeClass('.pac-item-selected');
   event.stopPropagation();
   return false;
 }, 2);
});

现在它解决了我的问题。

因此,用户应该如何选择建议,而不是使用箭头键?使用鼠标或输入键。有一个完全独立的页面供那些无法访问鼠标的人使用。我已经从另一个SO答案中使用了此代码,它不符合我的需要。您想如何自定义?请查看我的上一篇文章。我相信你发布的代码片段可以与之结合使用。