假设我将一个blur
函数附加到一个超文本标记语言输入框,如下所示:
<input id="myInput" onblur="function() { ... }"></input>
有没有办法获得在函数中触发blur
事件的元素(被单击的元素)的ID?多么?
例如,假设我有一个这样的跨度:
<span id="mySpan">Hello World</span>
如果我在input元素获得焦点之后单击span,则input元素将失去焦点。该函数如何知道被单击的是mySpan
?
PS:如果span的onclick事件发生在input元素的onblur事件之前,我的问题就解决了,因为我可以设置一些状态值来指示某个特定元素已被单击。
PPS:这个问题的背景是我想在外部(从一个可点击的元素)触发一个AJAX autocompleter控件来显示它的建议,而不会因为input元素上的blur
事件而立即消失。因此,如果某个特定元素被单击,我想检查blur
函数,如果是,则忽略blur事件。
发布于 2008-09-24 17:17:36
我最终在onblur事件上解决了这个问题(感谢一个不是StackOverflow的朋友的建议):
<input id="myInput" onblur="setTimeout(function() {alert(clickSrc);},200);"></input>
<span onclick="clickSrc='mySpan';" id="mySpan">Hello World</span>
在FF和IE中都能工作。
发布于 2010-04-04 03:49:13
可以使用文档的mousedown事件而不是模糊:
$(document).mousedown(function(){
if ($(event.target).attr("id") == "mySpan") {
// some process
}
});
发布于 2016-12-02 13:05:34
FocusEvent
类型的实例具有relatedTarget
属性,但是,直到FF的版本47,该属性都会返回null
,而它已经工作了48个。
你可以看到更多的here。
https://stackoverflow.com/questions/121499
复制相似问题