2011-10-13 81 views

回答

54

如您所知,如果該元素具有焦點但會丟失該元素,則該元素將觸發該元素。

onFocusOut事件在這種情況下觸發,但也觸發如果任何子元素失去焦點。

例如,您有一個具有特殊格式的div,因爲人正在編輯該區域中的字段。當焦點離開div時,您可以使用onFocusOut關閉該格式。

直到最近,onFocusOut只被IE使用。如果情況發生了變化,那就是最近的事了。在FF,Chrome等中進行測試

+5

2012年11月更新 - Chrome仍不支持'onfocusout'。 http://jsfiddle.net/4n39h/1/ –

+5

2014年1月即時使用onfocusout在鉻 – Snymax

+1

onBlur被解僱,即使頁面失去焦點 –

10

onfocusout事件是一個非標準事件,僅適用於Internet Explorer,而onblur事件是W3C標準的一部分,適用於所有現代瀏覽器。

0

The Jquery documentation has a good focusout vs. blur demo爲了清楚起見,我將在下面重現。簡而言之,如果演示中的選擇器$('p')包含輸入和父元素,則觸發focusout。而blur僅在選擇器處於輸入端時觸發 - $('input')

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>focusout demo</title> 
    <style> 
    .inputs { 
    float: left; 
    margin-right: 1em; 
    } 
    .inputs p { 
    margin-top: 0; 
    } 
    </style> 
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 

<div class="inputs"> 
    <p> 
    <input type="text"><br> 
    <input type="text"> 
    </p> 
    <p> 
    <input type="password"> 
    </p> 
</div> 
<div id="focus-count">focusout fire</div> 
<div id="blur-count">blur fire</div> 

<script> 
var focus = 0, 
    blur = 0; 
$("p") 
    .focusout(function() { 
    focus++; 
    $("#focus-count").text("focusout fired: " + focus + "x"); 
    }) 
    .blur(function() { 
    blur++; 
    $("#blur-count").text("blur fired: " + blur + "x"); 
    }); 
</script> 

</body> 
</html> 
+1

我無法解決模糊,不知道爲什麼:/ –

0

有本質上是在2017年沒有什麼區別:

https://www.quirksmode.org/js/events_order.html

很少Web開發人員自覺地運用事件捕獲或者冒泡。在今天製作的網頁中,根本沒有必要讓冒泡事件由幾個不同的事件處理程序來處理。用戶可能會因單擊鼠標後發生的幾件事而感到困惑,並且通常希望將事件處理腳本分開。

相關問題