2014-03-28 33 views
0

我具有以下設置:停止onblur事件當點擊指定的div

與onblur事件的輸入:

<input type="text" onblur="doSomethingCool();" /> 

1周的div onclick事件:

<div id="divOne" onclick="ipiicaei();"></div> 

甲整個其他的一堆html。

我需要在單擊divOne元素時停止doSomethingCool()函數。所以基本上,當點擊指定的頁面部分時,停止onblur。

注1:event.stopPropagation似乎不起作用。注意2:情況已被簡化,諸如「爲什麼要這樣做?」,「有什麼用?」,「爲什麼不更改函數以便onclick處理你需要的?」,「爲什麼不改變onblur事件與其他事情?「沒用。注3:已經有一個或多或少的「全球」旗幟的解決方案...但個人而言,我覺得這是一種跛腳,我正在尋找一個更好的解決方案。

+0

取消綁定事件... –

+0

問題旗是事件觸發異步(或至少它接縫如此(?) - 我可能是錯的)。不確定事件是否同步(以任何順序),使得標誌看起來不可靠。 – zozo

+0

@AlexGill:看起來onblur()在onclick()之前被調用,所以它不能解除onblick()中的onblur() – shaosh

回答

1

你可以只用延遲blur事件:

<input type="text" onblur="setTimeout(doSomethingCool);" /> 
<div id="divOne" onclick="ipiicaei();" tabindex="-1">test</div> 

#divOne讓它被聚焦見的tabindex屬性。

在CSS中,您可以添加:

#divOne { 
    outline:none; 
} 

,然後過濾onblur事件是這樣的:

function doSomethingCool(){ 
    if(document.activeElement.id === "divOne") return; 
    /* any other relevant stuff here */ 
} 

See DEMO

相關問題