Typ iets om te zoeken...

Wcag uitgelegd

Focus gaat niet naar de foutmelding na het versturen

Focus gaat niet naar de foutmelding na het versturen — WCAG 2.4.3 Focusvolgorde (post 8/11)

Je vult een formulier in. Twee velden vergeten. Je drukt op Versturen.

Er verschijnen twee foutmeldingen. Bovenaan het formulier. In het rood.

Maar je focus? Die zit nog op de Versturen-knop. Onderaan het formulier. Je weet niet dat er foutmeldingen zijn. Je ziet ze niet. Een schermlezer leest ze niet voor.

Voor een ziende muisgebruiker: je ziet de rode tekst verschijnen. Geen probleem.

Voor een toetsenbordgebruiker of schermlezergebruiker: niets verandert. De pagina lijkt hetzelfde. Je drukt weer op Tab en navigeert verder. De foutmeldingen zitten ergens boven je. Onopgemerkt.

// Niet doen: foutmeldingen tonen, focus blijft
function valideer() {
  const fouten = vindFouten();
  if (fouten.length > 0) {
    toonFoutmeldingen(fouten);
    // Focus blijft op de verzendknop
  }
}

// Wel doen: focus naar de eerste foutmelding
function valideer() {
  const fouten = vindFouten();
  if (fouten.length > 0) {
    toonFoutmeldingen(fouten);
    document.querySelector(".foutmelding")?.focus();
  }
}

Het foutmelding-element moet focusbaar zijn:

<div class="foutmelding" role="alert" tabindex="-1">
  2 fouten gevonden. Controleer de gemarkeerde velden.
</div>

role="alert" zorgt dat schermlezers de melding direct aankondigen. tabindex="-1" maakt het element programmatisch focusbaar (maar niet via Tab).

De gebruiker heeft net iets gedaan (formulier versturen) en verwacht feedback. Als die feedback buiten de focus zit, bestaat die niet.

Related Posts

Focus springt onverwacht door de pagina

Focus springt onverwacht door de pagina

Tab. Je bent in het hoofdmenu. Tab. Je bent in de sidebar. Tab. Je bent terug in het hoofdmenu. Tab. Nu ben je in de content.

Focus verlaat het dialoogvenster

Focus verlaat het dialoogvenster

De cookie-popup is open. Je tabt door de opties. Accepteren. Weigeren. Instellingen.

JavaScript dat de focus actief verwijdert

JavaScript dat de focus actief verwijdert

element.addEventListener("focus", function() { this.blur(); }); Een element krijgt focus. JavaScript verwijdert de focus direct. Het element heeft een fractie van een seconde focus gehad. De gebruiker merkt niets.