Javascript 当切换到页面时是否触发jQuery键控?

Javascript 当切换到页面时是否触发jQuery键控?,javascript,jquery,keyup,Javascript,Jquery,Keyup,我正在尝试使用jQuery和ajax在我的站点上创建一个实时搜索 但是,如果搜索框具有焦点,并且我移动到另一个浏览器选项卡,那么当我返回搜索页面时,jQuery将触发keyup()函数 我已经把它做成了模型 复制步骤: 打开JSFIDLE和任何其他浏览器选项卡 为文本框提供焦点 移动到另一个浏览器选项卡 返回原始页面(JSFIDLE) 预期/预期:keyup()未触发 发生的情况:keyup()已触发,如时间戳所示 我对Javascript了解不多,也读过jQuery文档,但我想不出答案 这是不

我正在尝试使用jQuery和ajax在我的站点上创建一个实时搜索

但是,如果搜索框具有焦点,并且我移动到另一个浏览器选项卡,那么当我返回搜索页面时,jQuery将触发
keyup()
函数

我已经把它做成了模型

复制步骤:

  • 打开JSFIDLE和任何其他浏览器选项卡
  • 为文本框提供焦点
  • 移动到另一个浏览器选项卡
  • 返回原始页面(JSFIDLE)
  • 预期/预期:
    keyup()
    未触发

    发生的情况:
    keyup()
    已触发,如时间戳所示

    我对Javascript了解不多,也读过jQuery文档,但我想不出答案

    这是不是因为我做错了什么? 这是Javascript/jQuery还是浏览器问题?(使用铬) 我怎样才能防止它发生

    谢谢!温柔点

    更新

    似乎只有在使用Ctrl+Tab键时才会触发,而不仅仅是在选项卡之间单击。可以通过单击页面以外的位置进行复制,但Ctrl+Shift+Tab可返回搜索页面

    我假设解决方案如下所述,将keycode9返回为
    false
    ,但将保留它以供其他建议使用。

    我也在使用chrome(在win7上)。无法复制。 不过,对您来说,一个解决方案是检查生成了哪个键码(
    e.keycode
    ),如果始终是同一个键码,则返回false。 对于ex,如果键代码为37:

    $('#search').keyup(function(e) {
        if(e.keyCode == 37) return false;
        $('#test').append('<li>'+e.timeStamp+'</li>');
    });
    ​
    
    $(“#搜索”).keyup(函数(e){
    如果(e.keyCode==37)返回false;
    $(“#test”).append(“
  • ”+e.timeStamp+”
  • ); }); ​
    我也在使用chrome浏览器,无法复制它。在您使用tab键之前,文本框是否有焦点?真遗憾,我希望我能尽我所能帮助你!这是可以的,但是为什么需要过滤这样的事件呢?只需读取输入的值。这当然会从keyup函数中删除该键,因此您需要确保不想测试该特定键。我还可以在Safari中复制它。有趣的是,keyCode是9,它是tab。例如:
    Ctrl+V
    也会生成一个
    keyup
    事件。我不确定,确实需要过滤。