jQuery keydown和:没有输入

我正在使用一个小脚本,当按下箭头键时触发页面上的下一个/上一个链接。 当用户输入我的搜索输入表单时,我试图阻止这种情况发生(也许他们拼错了他们的查询并希望使用箭头键来修复)。

这是我正在使用的:

var $j = jQuery.noConflict(); $j(function(){ $j('.n').click(function() { location.href = $j(this).attr('href') }); $j('.p').click(function(){ location.href = $j(this).attr('href') }); }); $j(':not(input)').keydown(function(event) { if(event.keyCode==39) { $j('.n').trigger('click') } if(event.keyCode==37) { $j('.p').trigger('click') } }); 

HTML基本上只是一个带有input字段的form 。 当光标在输入中时,触发仍然会进行。 我不确定我做错了什么。 任何帮助深表感谢!

事件正在通过文档的其余部分从输入中冒出来。

在您的活动中尝试注销event.trigger:

 $j(':not(input)').keydown(function(event) { console.log(event.trigger); // REST OF FN 

我敢打赌它不是HTMLInputElement

一种解决方案,尝试绑定输入并停止事件传播:

 $j('input').keydown(function(event) { event.stopPropagation(); }); 

看看是否有帮助。