2016-01-19 71 views
2

外面的手柄模糊事件我有一個包含一個孩子箱輸入type=number「父DIV」。當用戶在輸入框外單擊時,我使用父div的blurfocusout事件在其他某處使用輸入值。由焦點子元素上觸發父元素,並通過點擊子

我還需要在某個地方使用$('inputbox').trigger('focus'),這會不必要地激發「父div」的模糊事件並在該事件上運行代碼。

請給出一個解決方案,停止對孩子的關注這個父模糊事件,或給一個方法來找到焦點是否由子元件上,或者由用戶點擊父DIV外觸發(「專注」)製成。

只有當用戶在其外部點擊時,我需要觸發父級模糊&而不是在通過代碼觸發焦點時。

+1

你能分享一個小提琴http://jsfiddle.net? – gurvinder372

+0

請看最終答案。 –

回答

2

與jQuery你可以自定義事件很容易,像:

$('inputbox').trigger('special-focus'); 

那麼你可以等待該事件就像任何其他事件:

$('div').on('special-focus' , function(){ ... }); 

這將防止您的活動干涉內置的。

我想如果你不想使用建議則爲此在您單擊處理或孩子你的注意力處理器

.on('focus' , function(e){ 
    e.stopPropagation(); 
    e.preventDefault(); 
    /// the rest of your code ... 
}); 

這將事件的傳播停止父元素

+0

謝謝,但仍然如果我不得不使用.focus()專注於輸入框,它是父母的射擊模糊。 –

+0

編輯答案,又增加了解決方案,爲你工作 –

+0

可以附加到Click事件,您可能一半用在那裏趕上事件發揮。 –

0

.on('blur',...)父母火災之前.on('focus' ,...)的孩子。
反正含子輸入框 父DIV,我們可以使用
$('input').trigger('special-focus');
然後

$("#form").on('special-focus', '.parentdiv' , function(event) { 
      $("#form").off('blur', '.parentdiv'); 
      $(event.target).focus(); 
      $("#form").on('blur', '.parentdiv' , showValuesOnBlur); 
    }); 


現在模糊母公司將不會觸發對孩子的焦點。
這對我有用。即關閉特殊焦點內父模糊事件的&。
感謝Scott Selby :)

+0

如果你不打算來選擇我的答案是正確的答案,那麼你可能要考慮供應商的你沒有得到這個代碼的工作是什麼一個完整的答案。別人訪問此頁不會unserstand只是在一個自定義事件有投擲,而不是顯示它是如何觸發 –

+0

。對(「專注」,函數(E){即stopPropagation();等不會在這裏作爲家長模糊火第一..也工作代碼包含模糊事件 這是爲什麼我沒有標記你的答案corrent隊友,但它仍然是有用的建議自定義事件you.Had我標記此正確的,開發人員會繼續嘗試e.stopPropagation();這在這裏不起作用。 –

+0

我明白了,這很好,我只是想寫一個完整的答案,而我並沒有告訴你你必須要麼,我不是Stackoverflow老闆,我只是說你應該考慮。通過完成我並不是說我的意思是正確的我只是想填寫你遺漏的部分 –

1

對我來說,有效的方法是檢查處理函數中eventObject對象的relatedTarget屬性。

$("#parentDiv").focusout(function (eventObject) { 
    if (eventObject.relatedTarget.id === "childInputId") 
     /// childInput is getting focus 
    else 
     /// childInput is not getting focus 
}); 
相關問題