jQuery keydown和:没有输入

时间:2011-09-10 02:24:29

标签: jquery

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

以下是我正在使用的内容:

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基本上只是一个带有form字段的input。当光标在输入中时,触发仍然会进行。我不确定我做错了什么。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

事件正在从输入到文档的其余部分冒泡。

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

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

我敢打赌,这不是HTMLInputElement

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

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

看看是否有帮助。