2008-11-18 63 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