Aquí podría ser tu PUBLICIDAD


evento de fuego solamente cuando el foco se mueve fuera de cualquiera de los hijos de un elemento

votos
1

Quiero disparar un evento cuando , y sólo cuando el usuario se centra en algún lugar que no sea un elemento secundario de la div, por ejemplo, cuando el foco se transfiere de input1a input3:

<div onfocusout=console.log(document.activeElement)>
  <input type=text id=input1>
  <input type=text id=input2>
</div>

<input type=text id=input3>

Sin embargo, el evento focusOut está siendo activado incluso cuando foco se desplaza dentro de los elementos de la div, por ejemplo, cuando el foco se transfiere de input1a input2. Para empeorar las cosas, document.activeElementsiempre se resuelve bodyen el instante se activa focusOut (lo que sugiere que el enfoque rollos de todo el camino de vuelta a la bodyantes de regresar a input2) por lo que no puede verificar manualmente incluso cuando el nuevo enfoque termina antes de que se active la focusOut.

Publicado el 02/09/2018 a las 05:18
fuente por usuario SkyNT
En otros idiomas...        العربية       

1 respuestas

votos
1

Se puede comprobar la relatedTargetpropiedad del eventpasado al manejador para ver qué elemento está recibiendo el nuevo foco:

const container = document.querySelector('#container');
container.addEventListener('focusout', (e) => {
  console.log(e.relatedTarget);
  if (!container.contains(e.relatedTarget)) console.log('focus is now outside of container');
});
<div id="container">
  <input type="text" id="input1">
  <input type="text" id="input2">
</div>

<input type="text" id="input3">

Respondida el 02/09/2018 a las 05:22
fuente por usuario CertainPerformance


Aquí podría ser tu PUBLICIDAD