2014-05-19 48 views
1

以下帖子涉及我詢問here的上一個問題。如何正確處理與onblur相關的onclick事件

雖然這兩個問題是獨立的,但他們確實涉及到我實施的相同功能 - 預測文本。

我遇到的問題與如何調用2個事件onbluronclick有關。

這種情況發生在用戶在文本框中鍵入了一些字符並決定他們想改爲單擊一個建議而不是完成輸入整個單詞。我的onlick處理程序附加到每個建議。

但是,我也有一個onblur處理程序附加到我的文本框。

問題是,onblur處理程序應該關閉建議框並銷燬它的內容。

onlick處理程序需要內容才能複製點擊的div的值並將其複製到文本框中。

因此,困境。如果它已經被onblur處理程序銷燬,我不能複製任何東西。

我該如何捕獲onblur事件,同時還要弄清楚onblur是否是由用戶「點擊」其中一條建議觸發的?

希望我的問題有道理。

+0

所以你說,當你點擊這個建議時,模糊會先點燃,然後在點擊處理程序可以完成它所需要的之前殺死它。 – Seth

+0

@Seth - 沒錯。如果用戶點擊某個建議,則onblur處理程序將首先觸發。 –

+2

請粘貼一些代碼。小提琴也會有所幫助。 – Jonathan

回答

1

我嘗試了許多不同的東西,包括將我的文本輸入字段和我的autoFill div包裝在父級div中,並在父級上設置onblur - 但沒有任何工作。顯然,你不能在一個div上分配一個onblur事件(因爲它不能得到焦點)。

答案是在Seth建議的onblur事件上設置Timeout。

onblur="setTimeout(function() {closeSuggestionBox();}, 100);" 

我在帖子here上發現了一個很好的解釋。

+0

'setTimeout'不是理想的解決方案,因爲我在這裏回答中描述的原因:http://stackoverflow.com/a/36691651/1601953 基本上,你做了冒險的假設,用戶將放棄在元素在他們眼前消失之前,鼠標在'n' ms內點擊。 – Chris

相關問題