Brann tilfelle bare når fokus flyttes utenfor noen av et element barn

stemmer
1

Jeg vil skyte en hendelse når og bare når brukeren fokuserer et annet sted enn et barn element av div, for eksempel når fokus er overført fra input1til input3:

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

<input type=text id=input3>

Imidlertid er arrangementet focusout utløses selv når fokus skifter i elementene i den div, for eksempel ved fokus overføres fra input1til input2. For å gjøre vondt verre, document.activeElementalltid løser bodypå instant focusout utløses (noe som tyder på at fokus ruller hele veien tilbake til bodyfør han flyttet tilbake til input2) så jeg kan ikke engang manuelt kontrollere hvor det nye fokuset havner før focusout utløses.

Publisert på 02/09/2018 klokken 05:18
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Du kan sjekke relatedTargeteiendommen av eventpass til behandleren for å se hvilke element er å få nytt fokus:

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">

Svarte 02/09/2018 kl. 05:22
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more