2010-09-15 91 views
1

我正在將焦點轉移到onblur下拉事件的控件上,焦點轉移到所需的控件,並且爲該控件編寫的onblur事件正在執行,我不想要。我如何防止這種情況發生?如何在JavaScript中取消控件的onblur事件?

感謝

+0

一些代碼會有幫助 – 2010-09-15 10:28:11

回答

2

如果你設置了焦點,而焦點已經被設定,你可以預期各類奇事件的激發。這個問題不是特定於Javascript的;它發生在我曾經使用過的每個GUI上。您無法可靠地阻止事件發生,如果您嘗試使用其他瀏覽器或在不同的操作系統上運行,您可能無法以相同的順序獲得相同的順序。

我一直使用布爾變量作爲標誌來記錄我是否正在設置焦點的過程中,並且在設置該標誌時安靜地從onblur()等返回。像

 
var isFocusGettingMessedWith; 
... 
isFocusGettingMessedWith = true; 
someControl.focus(); 
isFocusGettingMessedWith = false; 
... 
function someControl_onblur(event) { 
    if (!isFocusGettingMessedWith) { /* do something */ } 
} 
function otherControl_onblur(event) { 
    if (!isFocusGettingMessedWith) { /* do something */ } 
} 

這種做法有什麼東西在每一種語言/平臺的組合,其中我已經有原因使用它工作可靠。