首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当一个'blur‘事件发生时,我怎样才能找出哪个元素的焦点转到了*?

当一个'blur‘事件发生时,我怎样才能找出哪个元素的焦点转到了*?
EN

Stack Overflow用户
提问于 2008-09-23 14:48:43
回答 14查看 165.5K关注 0票数 216

假设我将一个blur函数附加到一个超文本标记语言输入框,如下所示:

代码语言:javascript
复制
<input id="myInput" onblur="function() { ... }"></input>

有没有办法获得在函数中触发blur事件的元素(被单击的元素)的ID?多么?

例如,假设我有一个这样的跨度:

代码语言:javascript
复制
<span id="mySpan">Hello World</span>

如果我在input元素获得焦点之后单击span,则input元素将失去焦点。该函数如何知道被单击的是mySpan

PS:如果span的onclick事件发生在input元素的onblur事件之前,我的问题就解决了,因为我可以设置一些状态值来指示某个特定元素已被单击。

PPS:这个问题的背景是我想在外部(从一个可点击的元素)触发一个AJAX autocompleter控件来显示它的建议,而不会因为input元素上的blur事件而立即消失。因此,如果某个特定元素被单击,我想检查blur函数,如果是,则忽略blur事件。

EN

回答 14

Stack Overflow用户

发布于 2008-09-24 17:17:36

我最终在onblur事件上解决了这个问题(感谢一个不是StackOverflow的朋友的建议):

代码语言:javascript
复制
<input id="myInput" onblur="setTimeout(function() {alert(clickSrc);},200);"></input>
<span onclick="clickSrc='mySpan';" id="mySpan">Hello World</span>

在FF和IE中都能工作。

票数 20
EN

Stack Overflow用户

发布于 2010-04-04 03:49:13

可以使用文档的mousedown事件而不是模糊:

代码语言:javascript
复制
$(document).mousedown(function(){
  if ($(event.target).attr("id") == "mySpan") {
    // some process
  }
});
票数 17
EN

Stack Overflow用户

发布于 2016-12-02 13:05:34

FocusEvent类型的实例具有relatedTarget属性,但是,直到FF的版本47,该属性都会返回null,而它已经工作了48个。

你可以看到更多的here

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/121499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档