2008-11-18 65 views
1

在javascript中,当我收到一个焦点事件时,如何确定哪个元素失去了焦点?我试图避免必须在我的网页中的所有元素上放置onblur事件处理程序。哪个HTML元素失去焦点?

回答

0

@pbrodka:目标/ srcElement属性将引用元素与焦点的onfocus事件

副手我看不到有办法让这短暂的onblur的,或者如果你关心的对象集所有的焦点方法都可以存储对该对象的引用。它也有可能事件冒泡可以让你出狱

这一切感觉有点代码味道的,虽然 - 也许你需要更详细地说明这个问题

0

难这一点。您不能使用事件委派来确定哪个控件最后产生模糊,因为焦点/模糊不会起泡。已经有一些尝试“修复”这个,但他们是越野车,而不是跨浏览器的弹性。 我可以问你为什么你需要这个信息,因为也许有一个替代解决方案。

0

不幸的是,onblur事件不会冒泡,否则你可能会在窗口的水平已经处理它总是知道什么时候一个元素失去焦点。

照现在的情况,我相信这将是很难不这样做,正如你所说,添加onblur事件处理程序的所有元素(一个真正讨厌的解决方案;-)。

0

最简单的解决方法是编写走所有表格,然后在窗体中的所有元素,并为安装的每个处理器的onblur(这可能会调用一些全局函数)的功能。该处理程序将获得一个事件,并且此事件将包含您所寻找的信息。

这样,您只需在body.onload中调用此方法一次,无论文档有多复杂,它都可以工作。

唯一的缺点是,如果您将表单动态添加到当前文档中,您将需要调用它。在这种情况下,您必须确保不要再次安装处理程序(否则您将得到虚假的重复事件)。

+0

这听起来泄漏。您需要在某种全局变量中存储对每个元素的引用。 IE可能像筛子一样泄漏。 – 2008-11-18 15:48:31