在javascript中,当我收到焦点事件时,如何确定哪个元素丢失了焦点?我试图避免在我的网页中的所有元素上放置一个onblur事件处理程序。
答案 0 :(得分:0)
@pbrodka:target / srcElement属性将引用具有焦点的元素onfocus事件
offhand我无法找到一种方法来获得这个简短的onblur,或者如果你关心的对象集合都有焦点方法,你可以存储对该对象的引用。事件冒泡也可能让你离开监狱
这一切都感觉像是一些代码味道 - 也许你需要更详细地描述问题
答案 1 :(得分:0)
很难。您不能使用事件委派来找出上次产生模糊的控件,因为焦点/模糊不会冒泡。有一些尝试“修复”这个,但它们是错误的,而不是弹性跨浏览器。 我可以问你为什么需要这些信息,因为可能有另一种解决方案。
答案 2 :(得分:0)
不幸的是,onblur事件不会冒泡,否则你可以在窗口级别处理它,以便始终知道元素何时失去焦点。
就目前而言,我相信很难没有,就像你说的那样,为所有元素添加一个onblur事件处理程序(一个真正令人讨厌的解决方案; - )。
答案 3 :(得分:0)
最简单的解决方案是编写一个函数,遍历表单中的所有表单,然后遍历表单中的所有元素,并为每个元素安装一个onblur处理程序(可能会调用一些全局函数)。此处理程序将获取一个事件,此事件将包含您寻找的信息。
这样,你只需要在body.onload中调用一次这个方法,无论你的文档有多复杂,它都会有效。
唯一的缺点是,如果您动态地向当前文档添加表单,则需要调用它。在这种情况下,您必须确保不再安装处理程序(或者您将获得虚假的重复事件)。
答案 4 :(得分:0)
如果您按照PPK的建议,可以委派焦点和模糊事件: http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html