【问题标题】:How to disable calling focus event on page leaving如何在页面离开时禁用调用焦点事件
【发布时间】:2012-11-02 17:07:27
【问题描述】:

我有这个代码:

$('#search_user').keyup(function() {
    alert('hello keyup');
}).focus(function() {
    alert('hello focus');
}).blur(function() {
    alert('hello blur');
});

#search_userinput 字段的id

我关注输入,下一个(不模糊)关注浏览器中的地址栏,然后单击 Enter。如果我这样做,我可以看到“警报焦点”。我该如何禁用它?我只想在我集中输入时发出警报,而不是在我用 enter 刷新页面时发出警报。

浏览器:FF 16

【问题讨论】:

  • 是否有代码在加载时自动将插入符号放入输入框中,例如$("#search_user").focus();
  • 我认为您对此无能为力。即使检查e.originalEvent(它会告诉您事件是由点击触发还是由代码触发)也无济于事。
  • 我暂时将focus()函数替换为click(),现在可以正常使用了。

标签: jquery focus


【解决方案1】:

我认为您正在寻找the focusin eventfocus 在失去焦点和获得焦点时触发。

【讨论】:

  • 在此处查看演示字段。 api.jquery.com/focusin 试试这个案例:在字段中输入插入符号,然后在浏览器的地址栏中输入。当你的按下进入时你能看到什么? “聚焦火”。 .focus() 也是同样的情况。在所描述的情况下,这是我不想拥有的,但我该如何解决?
  • 哦,我明白了。当您将插入符号放在文本框中时,您就是将焦点放在那里。当您在地址栏上按 Enter 时,焦点将返回到您将其更改为地址栏之前具有焦点的任何字段。这也发生在 Chrome 中,但不会发生在 IE 9 中。如果您按下重新加载按钮,也不会发生按下 F5 ... 奇怪。我在想,如果 URL 没有更改,它实际上可能不会刷新?...不,它会刷新,因为它会跳转到屏幕顶部。
  • “Focusin fire”也会在我们将地址放到不同的页面时显示。所以阻止刷新是不够的。
  • 是的,如果window.unload 触发,我正在考虑可能会阻止它,但focus 不会冒泡到window,只会冒泡到document(至少在Chrome 中),并且unload 仅在 window 上发生,focusunload 之前触发。通过附加到捕获阶段,您可能可以在原始 JavaScript 中做一些事情,但它充其量只是很笨拙。抱歉,我帮不上忙,我误解了要求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 2015-08-12
  • 2013-05-04
  • 1970-01-01
相关资源
最近更新 更多