选项卡到页面时是否触发了jQuery keyup?

时间:2012-03-12 22:00:14

标签: javascript jquery keyup

我正在尝试使用jQuery和ajax在我的网站上创建实时搜索。

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

我在JSfiddle

中嘲笑了这个

重现的步骤:

  1. 打开JSfiddle和任何其他浏览器标签
  2. 设置文本框焦点
  3. 转到其他浏览器标签
  4. 返回原始页面(JSfiddle)
  5. 预期/意图 keyup()未触发

    会发生什么: keyup()已触发,如时间戳所示

    我对Javascript知之甚少,而且我已经阅读了jQuery文档,但我无法得出答案。

    这是因为我做错了吗? 它是Javascript / jQuery还是浏览器问题? (使用Chrome) 我怎么能阻止它发生?

    谢谢!要温柔。

    更新

    它似乎只有在使用Ctrl + Tab时触发,而不是仅仅在标签之间单击。可以通过单击远离页面进行复制,但按Ctrl + Shift + Tab可以返回搜索页面。

    我认为解决方案如下所述,将keyCode 9作为false返回,但会将其保留为其他建议。

1 个答案:

答案 0 :(得分:1)

我也在使用chrome(在win7上)。无法重现。 但是,对您而言,一种解决方案是检查生成的密钥代码(e.keyCode),以及return false是否始终相同。 例如,如果keyCode是37:

$('#search').keyup(function(e) {
    if(e.keyCode == 37) return false;
    $('#test').append('<li>'+e.timeStamp+'</li>');
});
​