2011-10-13 14 views

Respuesta

54

Como usted sabe, el evento onBlur se activa para un elemento si ese elemento tenía el foco, pero lo pierde.

El evento onFocusOut se desencadena en este caso, pero también se desencadena si algún elemento secundario pierde el foco.

Por ejemplo, tiene un div con formato especial porque el ser humano está editando un campo en esa área. Podría usar en Foco Externo para desactivar ese formato cuando el foco abandone ese div.

Hasta hace muy poco, enFocusOut solo lo usaba IE. Si eso ha cambiado, ha sido muy reciente. Prueba en FF, Chrome, etc.

+5

actualización de noviembre de 2012 - Chrome aún no admite 'onfocusout'. http://jsfiddle.net/4n39h/1/ –

+5

enero de 2014 im usando onfocusout en cromo – Snymax

+1

onBlur se dispara incluso si la página pierde el foco –

10

El evento onfocusout es un evento no estándar que solo funciona en Internet Explorer, mientras que el evento onblur es parte de los estándares W3C y funciona en todos los navegadores modernos.

0

The Jquery documentation has a good focusout vs. blur demo que reproduciré a continuación para mayor claridad. En resumen, focusout se dispara si el selector - $('p') en la demostración - es cualquier cosa incluyendo las entradas y los elementos principales. Mientras que, blur solo se activa si el selector está en las entradas - $('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

No puedo disparar el desenfoque, no sé por qué: / –

0

hay ninguna diferencia esencial en 2017:

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

pocos desarrolladores web utilizan conscientemente captura de eventos o el burbujeo. En las páginas web, tal como están hechas hoy, simplemente no es necesario permitir que un evento de burbujeo sea manejado por varios manejadores de eventos diferentes. Los usuarios pueden confundirse por varias cosas que suceden después de un clic del mouse, y generalmente desea que su evento maneje los scripts separados.

Cuestiones relacionadas