WCAG framgångskriterier · Level AA
WCAG 3.3.4: Felprevention (juridiskt, ekonomiskt, data)
WCAG 3.3.4 kräver att webbinlämningar som innebär juridiska åtaganden, finansiella transaktioner eller känsliga uppgifter kan kontrolleras, korrigeras eller ångras innan de slutförs. Detta skyddar alla användare – särskilt de med kognitiva och motoriska funktionsnedsättningar – från oåterkalleliga misstag med stora konsekvenser.
Vad den här regeln innebär
WCAG:s framgångskriterium 3.3.4, med titeln Felprevention (juridiskt, ekonomiskt, data), är ett krav på nivå AA under Princip 3 (Förståelig) och Riktlinje 3.3 (Inmatningshjälp). Det gäller specifikt webbsidor där användare kan orsaka juridiska åtaganden eller ekonomiska transaktioner, eller där användaren ändrar eller raderar användarkontrollerad data i ett datalagringssystem.
Kriteriet kräver att minst en av följande tre skyddsmekanismer tillhandahålls för varje sådan insändning:
- Reversibel: Insändningen kan ångras efter att den har skickats. Till exempel kan en beställning avbrytas inom ett definierat tidsfönster, eller en raderad post kan återställas.
- Kontrollerad: De data som användaren matar in kontrolleras för inmatningsfel, och användaren får möjlighet att rätta dessa fel innan insändningen slutförs.
- Bekräftad: En mekanism tillhandahålls för att granska, bekräfta och korrigera information innan den slutliga insändningen. Detta tar vanligtvis formen av en sammanfattning eller granskningssteg innan en skicka-knapp slutför transaktionen.
Det är viktigt att notera att endast ett av dessa tre villkor behöver uppfyllas för att klara kravet. Att enbart tillhandahålla ett steg för granskning och bekräftelse är tillräckligt, liksom att tillhandahålla ett avbokningsfönster efter insändning, liksom robust validering i realtid med möjlighet till korrigering. Bästa praxis är dock att kombinera flera skyddsmekanismer.
Omfattningen av kriteriet: Regeln gäller tre kategorier av transaktioner. För det första omfattar den juridiska åtaganden såsom att teckna en prenumeration, godkänna ett avtal eller skicka in en bindande juridisk blankett. För det andra omfattar den ekonomiska transaktioner inklusive köp, överföringar, låneansökningar och räkningbetalningar. För det tredje omfattar den alla åtgärder som ändrar eller raderar användarkontrollerad data i ett datalagringssystem — till exempel att uppdatera profilinformation, radera filer från en molntjänst eller redigera poster i ett administrativt gränssnitt.
Ett godkänt exempel ser ut så här: en e-handelskassa som visar en ordersammanfattning med en länk ”Redigera” och en knapp ”Slutför beställning” som sista steg. Ett underkänt exempel ser ut så här: ett enstegsköpformulär där ett klick på ”Köp nu” omedelbart debiterar ett kort utan granskningsskärm, utan avbokningsalternativ och utan valideringssteg.
Kriteriet har ett definierat undantag: det gäller inte formulär där det inte får några konsekvenser att skicka in felaktig information och insändningen enkelt kan upprepas. Enkla kontaktformulär eller anmälningar till nyhetsbrev faller i allmänhet utanför omfattningen, även om god praxis fortfarande uppmuntrar validering även i dessa formulär.
Varför det är viktigt
Fel under transaktioner med höga insatser kan få allvarliga, ibland oåterkalleliga konsekvenser: pengar överförda till fel konto, ett juridiskt avtal undertecknat under falska förutsättningar, medicinska journaler uppdaterade med felaktig information eller en prenumeration köpt på fel nivå. För användare utan funktionsnedsättning är det ofta enkelt att upptäcka och rätta sådana misstag. För många grupper med funktionsnedsättning kan det vara extremt svårt eller till och med omöjligt utan de skyddsmekanismer som detta kriterium kräver.
Användare med kognitiva funktionsnedsättningar — inklusive personer med dyslexi, ADHD, minnesnedsättningar eller intellektuella funktionsnedsättningar — är mer benägna att göra inmatningsfel och mindre benägna att upptäcka dem innan de klickar på skicka. En granskningsskärm ger dem den tid och tydlighet de behöver för att upptäcka misstag. Enligt Världshälsoorganisationen lever cirka 1 miljard människor världen över med någon form av kognitiv, neurologisk eller psykisk hälsotillstånd som påverkar den dagliga funktionen.
Användare med motoriska funktionsnedsättningar som är beroende av switch-styrning, ögonstyrningsenheter eller alternativa tangentbord är benägna att råka aktivera kontroller och göra oavsiktliga tangenttryckningar. Ett bekräftelsesteg fungerar som en kritisk buffert: även om ”Skicka” aktiveras av misstag har användaren en ny möjlighet att avbryta innan transaktionen slutförs. Utan detta skydd kan en enda oavsiktlig tryckning utlösa en ekonomisk transaktion som användaren inte kan ångra.
Skärmläsaranvändare som navigerar långa formulär linjärt kanske inte har en helhetsbild av vad de har matat in. En uppläst sammanfattning i bekräftelsesteget — där de inmatade värdena läses upp — gör det möjligt för dem att upptäcka fel som de inte kunde skanna visuellt efter.
Användare med ångest eller uppmärksamhetssvårigheter har stor nytta av att veta att det finns ett skyddsnät. Forskning visar konsekvent att när användare uppfattar en process som fel-tolerant, interagerar de med större självförtroende och avbryter transaktioner mer sällan. Detta gynnar direkt konverteringsgrad och användarnöjdhet, vilket gör efterlevnad av 3.3.4 till en affärsfördel såväl som en etisk skyldighet.
Scenario från verkligheten: En synskadad användare i Istanbul bokar en inrikesflygning med hjälp av en skärmläsare. Hon väljer ett datum men navigerar av misstag förbi fältet för antal passagerare, så att det står kvar på standardvärdet två passagerare i stället för en. Om bokningssajten debiterar hennes kort i samma ögonblick som hon aktiverar ”Bekräfta” har hon köpt två biljetter och kan drabbas av icke återbetalningsbara biljettavgifter. En granskningsskärm som läser upp ”1 passagerare: Ayşe Yılmaz, Ankara till Istanbul, 14 mars, Economy — Totalt: ₺850” skulle låta henne upptäcka felet omedelbart.
Relaterade Axe-core-regler
WCAG 3.3.4 kräver manuell testning. Ingen automatiserad axe-core-regel motsvarar direkt detta kriterium eftersom de skyddsmekanismer det kräver — reversibilitet, validering med möjlighet till korrigering och bekräftelsesteg — handlar om applikationsflöde och affärslogik, inte om markup-struktur eller DOM-attribut. Automatiserade verktyg kan tolka HTML och ARIA, men de kan inte avgöra om en ”Betala nu”-knapp utlöser en oåterkallelig debitering, om det finns en avbokningspolicy eller om data som visas på en granskningsskärm korrekt återspeglar vad som matats in.
- Varför automatisering inte kan upptäcka detta: En automatiserad skanner ser ett
<button>-element med texten ”Skicka” och giltig markup. Den har ingen möjlighet att veta om aktivering av den knappen initierar en bindande ekonomisk transaktion, om en bekräftelsedialog följer eller om transaktionen kan ångras efteråt. Detta är arkitektur- och UX-beslut som ligger ovanför nivån för enskilda DOM-noder och kräver en mänsklig testare som förstår hela användarresan. - Delvisa signaler att leta efter under automatiserade skanningar: Även om axe-core inte flaggar 3.3.4-överträdelser direkt, använder granskare ibland axe för att identifiera relaterade problem som förstärker risken — såsom saknade
autocomplete-attribut på betalningsfält (relevant för 1.3.5), avsaknad av felmeddelanden (relevant för 3.3.1 och 3.3.3) eller saknade etiketter på formulärkontroller (relevant för 1.3.1 och 4.1.2). Dessa relaterade fel gör felprevention ännu svårare att uppnå. - Rekommenderat manuellt granskningsupplägg: Testare bör kartlägga varje användarresa som innefattar en juridisk, ekonomisk eller dataändrande insändning och sedan utvärdera varje resa mot de tre kriterierna: Går det att ångra? Finns det inline-validering med möjlighet till korrigering? Finns det ett steg för granskning och bekräftelse? Att missa alla tre i någon sådan resa utgör ett 3.3.4-fel.
Hur man testar
- Inventera formulär med höga insatser: Innan testningen börjar, skapa en lista över alla formulär eller interaktiva arbetsflöden på webbplatsen som innefattar ekonomiska transaktioner (kassa, betalning, fakturering), juridiska åtaganden (avtalssignering, prenumerationsanmälan, samtyckesformulär) eller dataändring/radering (profilredigering, filradering, kontoborttagning). Det är endast dessa flöden som omfattas av 3.3.4.
- Kör en automatiserad skanning efter relaterade problem: Använd axe DevTools eller Lighthouse för att identifiera tillgänglighetsfel på formulärnivå på varje sida inom omfattningen. Även om dessa verktyg inte flaggar 3.3.4 direkt, innebär åtgärdande av problem som saknade etiketter, avsaknad av autocomplete-attribut och saknade felmeddelanden att en grundläggande formulärkvalitet etableras innan felpreventiva skyddsmekanismer utvärderas.
- Testa skyddsmekanismen ”Kontrollerad”: Skicka medvetet in varje formulär inom omfattningen med avsiktliga fel — omkastade siffror i ett kortnummer, ett ogiltigt datum, ett fält för e-postbekräftelse som inte matchar. Observera om systemet stoppar insändningen, identifierar det specifika felet, beskriver hur det ska åtgärdas (enligt 3.3.3) och håller kvar användaren i formuläret för att göra korrigeringar. Om formuläret skickas tyst eller endast visar ett generellt fel utan att identifiera vilket fält som misslyckades, uppfylls inte denna skyddsmekanism.
- Testa skyddsmekanismen ”Bekräftad”: Fyll i varje formulär inom omfattningen med giltiga data och gå igenom hela flödet. Identifiera om ett granskningssteg visas innan den slutliga insändningen. Verifiera att granskningssteget visar alla inmatade data i ett läsbart format, innehåller en mekanism för att gå tillbaka och redigera samt kräver en medveten slutlig åtgärd för att slutföra insändningen. Använd NVDA med Firefox och JAWS med Chrome för att navigera detta granskningssteg med en skärmläsare och bekräfta att alla värden läses upp och att kontrollerna för redigering och bekräftelse är nåbara med tangentbord.
- Testa skyddsmekanismen ”Reversibel”: Slutför en insändning och försök sedan att ångra den. För e-handel, leta efter en avbokningslänk i bekräftelsemejlet eller på sidan med orderhistorik. För dataradering, leta efter en återställnings- eller papperskorgsmekanism. Utvärdera om tidsfönstret för ångring kommuniceras tydligt till användaren innan hen skickar in, inte bara efteråt.
- Genomgång med skärmläsare (VoiceOver + Safari på macOS/iOS): Navigera hela kassa- eller insändningsflödet med enbart tangentbord och VoiceOver. Bekräfta att granskningsskärmen läser upp alla inmatade värden i en logisk ordning, att redigeringslänkar annonseras med tillräcklig kontext (t.ex. ”Redigera leveransadress” och inte bara ”Redigera”) och att den slutliga bekräftelseknappens syfte är entydigt.
- Kontroll av kognitiv belastning: Utvärdera om granskningssteget presenteras på klarspråk. En sammanfattning som listar råa databasfältnamn eller använder juridiskt fackspråk utan förklaring kan tekniskt sett kvalificera som en granskningsskärm men i praktiken misslyckas för användare med kognitiva funktionsnedsättningar.
Hur man åtgärdar
Enstegskassa utan granskning — felaktigt
<!-- Problematiskt: ett klick på "Complete Purchase" debiterar omedelbart kortet -->
<form action='/checkout/complete' method='post'>
<input type='hidden' name='cart_id' value='abc123'>
<input type='hidden' name='payment_token' value='tok_xyz'>
<button type='submit'>Complete Purchase</button>
</form>
Enstegskassa med tillagt granskningssteg — korrekt
<!-- Steg 1: formulär samlar in data, skickar till granskningssida (inte slutligt) -->
<form action='/checkout/review' method='post'>
<!-- betalnings- och leveransfält -->
<button type='submit'>Review Order</button>
</form>
<!-- Steg 2: granskningssida sammanfattar alla inmatade data och erbjuder redigeringslänkar -->
<section aria-labelledby='review-heading'>
<h2 id='review-heading'>Review Your Order</h2>
<dl>
<dt>Delivery address</dt>
<dd>Atatürk Cad. No:5, Kadıköy, Istanbul</dd>
<dd><a href='/checkout/edit-address'>Edit delivery address</a></dd>
<dt>Total</dt>
<dd>₺1,249.00</dd>
</dl>
<form action='/checkout/complete' method='post'>
<input type='hidden' name='order_token' value='tok_abc'>
<!-- Slutlig knapp är tydligt märkt som den bindande åtgärden -->
<button type='submit'>Place Order and Pay ₺1,249.00</button>
</form>
</section>
Oåterkallelig dataradering utan bekräftelse — felaktigt
<!-- Problematiskt: delete-knapp skickar direkt utan bekräftelsedialog -->
<form action='/account/delete-profile' method='post'>
<button type='submit'>Delete My Account</button>
</form>
Oåterkallelig dataradering med bekräftelsedialog — korrekt
<!-- Utlösarknapp öppnar en bekräftelsedialog, inte den destruktiva åtgärden -->
<button type='button' aria-haspopup='dialog' aria-controls='confirm-delete-dialog'>
Delete My Account
</button>
<dialog id='confirm-delete-dialog' aria-labelledby='dialog-title' aria-describedby='dialog-desc'>
<h2 id='dialog-title'>Permanently Delete Account?</h2>
<p id='dialog-desc'>
This will permanently remove all your data. This action cannot be undone.
Your subscription will be cancelled immediately.
</p>
<form action='/account/delete-profile' method='post'>
<button type='submit'>Yes, permanently delete my account</button>
<button type='button' onclick='this.closest("dialog").close()'>Cancel</button>
</form>
</dialog>
Ekonomiskt formulär utan inline-validering — felaktigt
<!-- Problematiskt: ingen validering, fel IBAN accepteras tyst -->
<form action='/transfer/submit' method='post'>
<label for='iban'>Recipient IBAN</label>
<input type='text' id='iban' name='iban'>
<label for='amount'>Amount (TRY)</label>
<input type='number' id='amount' name='amount'>
<button type='submit'>Transfer</button>
</form>
Ekonomiskt formulär med validering och granskning — korrekt
<!-- Inline-validering med aria-describedby för felkoppling -->
<form action='/transfer/review' method='post' novalidate>
<div>
<label for='iban'>Recipient IBAN</label>
<input
type='text'
id='iban'
name='iban'
aria-describedby='iban-hint iban-error'
aria-required='true'
autocomplete='off'
pattern='[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}'
>
<p id='iban-hint'>Enter a valid TR IBAN starting with TR followed by 24 digits.</p>
<p id='iban-error' role='alert' aria-live='assertive' hidden>
Invalid IBAN format. Please check the number and try again.
</p>
</div>
<!-- Skickar till granskningssida, inte direkt utförande -->
<button type='submit'>Review Transfer</button>
</form>
Vanliga misstag
- Att använda en tooltip som ”gransknings”-mekanism: Att visa inmatade värden i en hover-tooltip före skicka-knappen utgör inte ett granskningssteg, eftersom tooltips inte är tillgängliga för tangentbordsanvändare eller skärmläsaranvändare och försvinner innan användaren kan agera på dem.
- Att märka den slutliga knappen ”Fortsätt” i stället för att beskriva åtgärden: En knapp med texten ”Fortsätt” på en granskningssida gör inte tydligt att ett klick kommer att slutföra en ekonomisk transaktion. Knappen måste entydigt beskriva den bindande åtgärden, såsom ”Slutför beställning och betala ₺850” eller ”Signera avtal”.
- Att endast ange avbokningspolicy i användarvillkoren: Att gömma ångermekanismen i ett länkat juridiskt dokument som de flesta användare inte läser uppfyller inte kravet på reversibilitet. Möjligheten att avboka och tidsfönstret inom vilket det är möjligt måste kommuniceras i själva transaktionsflödet.
- Att använda
window.confirm()som enda bekräftelsemekanism: Webbläsarens inbyggda bekräftelsedialoger har bristfälligt stöd i vissa hjälpmedel, kan inte stylas för läsbarhet och blockeras i vissa webbläsarkonfigurationer. De bör inte användas som enda skyddsmekanism för insändningar med höga insatser. - Att återställa formuläret vid valideringsfel utan att bevara giltiga fältvärden: När ett formulär misslyckas i valideringen och alla fält rensas tvingas användare — särskilt de med motoriska funktionsnedsättningar — att mata in all data på nytt. Endast det ogiltiga fältet ska rensas eller markeras; alla giltiga inmatningar måste bevaras.
- Att placera länken ”Redigera” på granskningssidan utan programmatisk koppling: En ”Redigera”-länk bredvid varje datagrupp måste ha ett beskrivande tillgängligt namn (t.ex.
aria-label='Edit billing address'). Enbart ”Redigera” upprepat flera gånger är tvetydigt för skärmläsaranvändare som navigerar via länkar. - Att inte annonsera granskningssteget för skärmläsare: Om granskningssidan laddas utan att flytta fokus till rubriken eller en sammanfattningsregion kan skärmläsaranvändare missa att de befinner sig på en granskningssida och kan aktivera skicka-knappen utan att läsa sammanfattningen.
- Att behandla kriteriet som om det bara gäller betalningssidor: Omfattningen inkluderar alla juridiska åtaganden (prenumerationsanmälan, samtyckesformulär, avtalsgodkännande) och all användardataändring (radering av filer, uppdatering av medicinska journaler, ändring av kontoinställningar). Utvecklare förbiser ofta administrativa gränssnitt och inställningssidor.
- Att endast erbjuda ångring via telefon eller e-post: Om avbokning kräver att man ringer en supportlinje kan användare med tal- eller hörselnedsättning sakna möjlighet att använda ångermekanismen. Själva ångerflödet måste vara tillgängligt — helst ett avbokningsflöde i appen.
- Att hoppa över kriteriet för mobila webbvyer: Vissa team implementerar ett granskningssteg på desktop men använder ett kondenserat enstegsflöde på mobil för att spara skärmyta. Kriteriet gäller lika för alla vyportstorlekar och får inte utelämnas i responsiva eller mobila webblösningar.
Relation till Turkiets tillgänglighetsreglering
Turkiets Presidential Circular 2025/10, publicerad i Officiella tidningen nr 32933 den 21 juni 2025, etablerar ett omfattande nationellt ramverk för tillgänglighet som hänvisar till WCAG 2.2 som teknisk standard. Cirkuläret kräver att digitala tjänster uppnår minst WCAG 2.2 nivå AA, vilket inkluderar WCAG 3.3.4 Felprevention (juridiskt, ekonomiskt, data).
De aktörer som uttryckligen omfattas av cirkuläret spänner över ett brett spektrum av sektorer. Offentliga institutioner och myndigheter måste göra alla medborgarorienterade digitala tjänster tillgängliga, inklusive onlineansökningar, e-förvaltningsportaler och digitala identitetstjänster — vilka alla ofta innefattar juridiska åtaganden och dataändring. Banker och finansiella institutioner som regleras av BDDK (Banking Regulation and Supervision Agency) måste följa reglerna, vilket gör 3.3.4 direkt relevant för varje internetbankstransaktion, överföring och låneansökan de erbjuder. Sjukhus och vårdinrättningar som driver digitala patientportaler, bokningssystem för vårdbesök och elektroniska journaler måste säkerställa att all datainmatning eller dataändring i dessa system uppfyller standarder för felprevention. Telekomoperatörer med 200,000 eller fler abonnenter — inklusive Turkcell, Vodafone TR och Türk Telekom — måste säkerställa att hantering av abonnemang, ändring av abonnemangsplaner och betalningsflöden omfattas. E-handelsplattformar, resebyråer, privata transportföretag och privatskolor auktoriserade av Ministry of National Education (MoNE) omfattas också, vilket täcker en betydande andel av transaktionsintensiva webbtjänster på den turkiska marknaden.
Efterlevnad av 3.3.4 är inte bara en teknisk avprickningspunkt i detta ramverk. Organisationer som vill erhålla Erişilebilirlik Logosu (tillgänglighetslogotypen) utfärdad av Ministry of Family and Social Services måste visa full WCAG 2.2 AA-efterlevnad. Logotypen fungerar som en offentlig förtroendesignal och förväntas i allt högre grad av konsumenter och upphandlande organ. Underlåtenhet att implementera felpreventiva skyddsmekanismer i ekonomiska eller juridiska arbetsflöden kan leda till både avslag på logotypen och potentiella administrativa åtgärder enligt cirkulärets sanktionsbestämmelser.
För turkiska organisationer inom e-handel och fintech i synnerhet ligger 3.3.4 nära befintliga konsumentskyddskrav enligt turkisk lag. Lagen om konsumentskydd (nr 6502) och tillhörande e-handelsregler kräver redan tydlig förhandsinformation och ångerrätt för distansavtal. Att implementera ett WCAG 3.3.4-kompatibelt steg för granskning och bekräftelse uppfyller samtidigt både tillgänglighetskravet och konsumenträttsliga skyldigheter att presentera ordersammanfattningar innan en köpare binds. Denna dubbla efterlevnad gör investeringar i korrekt felpreventiv UX till en insats med högt värde och låg dubbelarbete för turkiska digitala tjänsteleverantörer.
