0

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

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

我在JSfiddle中模拟了这个

重现步骤:

  1. 打开 JSfiddle 和任何其他浏览器选项卡
  2. 赋予文本框焦点
  3. 移动到另一个浏览器选项卡
  4. 返回原始页面(JSfiddle)

预期/预期: keyup()未触发

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

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

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

谢谢!要温柔。

更新

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

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

4

1 回答 1

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>');
});
​
于 2012-03-12T22:07:20.517 回答