Home Werk
SaaS bouwenAI developmentAPI developmentMobile app developmentGoogle Ads managementHeadless ShopifyLaravel developmentNext.js developmentReact developmentTypeScript engineeringUI/UX designSEO & AEOWebshop bouwen
AI-oplossingenB2B-platformsE-commerceHorecaLead generationLogistiekOnderwijsProcesautomatiseringSaaS-platformsStartup MVPVastgoedZorg
JuridischZorgVastgoedFinanceHoreca
Den HaagRotterdamAmsterdamUtrechtEindhovenAlmereBredaArnhemNijmegenTilburgEnschedeGroningenLeidenDelftZoetermeerDen Bosch
Studio
OverWerkwijzeLabBlogContact

Formulierfouten compleet Nieuw

Contactformulier met de volledige foutafhandeling: fout per veld (aria-describedby), foutsamenvatting met links naar de velden, vinkje per geldig veld, typfoutsuggestie voor e-mail, knop die pas actief oogt als alles klopt en een laad- en succesmelding. Gebruikt Constraint-achtige validatie in kleine JS en container queries (fallback: één kolom).

Demo

Vraag het Glaszetter Van Dijk

Velden met * zijn verplicht. Antwoord binnen 1 werkdag.

Nog 3 velden te gaan

Zo gebruik je het

  1. Plak de HTML op de plek waar het onderdeel moet komen.
  2. Zet de CSS in je stylesheet. Alle klassen hebben een eigen voorvoegsel, dus niets botst met je eigen opmaak.
  3. Voeg de JavaScript toe en roep init() aan met het element waar de HTML in staat.
<!-- Formulierfouten compleet · NedDev · eigen werk. -->
<div class="jouw-container">
<div class="ffs"><div class="ffs__in">
<div class="ffs__demo" role="group" aria-label="Demo: kies een staat"><span class="ffs__demo-l">Demo</span><button type="button" data-demo="fout">Toon fouten</button><button type="button" data-demo="goed">Vul juist in</button><button type="button" data-demo="leeg">Leeg</button></div>
<form class="ffs__form" novalidate>
<div class="ffs__head"><h3 class="ffs__h">Vraag het Glaszetter Van Dijk</h3><p class="ffs__sub">Velden met * zijn verplicht. Antwoord binnen 1 werkdag.</p></div>
<div class="ffs__sum" tabindex="-1" aria-labelledby="ffs-sumh" hidden><p class="ffs__sum-h" id="ffs-sumh"></p><ul class="ffs__sum-l"></ul></div>
<div class="ffs__grid">
<div class="ffs__f" data-f="naam"><label class="ffs__l" for="ffs-naam">Naam *</label><div class="ffs__ctl"><input class="ffs__i" id="ffs-naam" name="naam" autocomplete="name" required aria-describedby="ffs-naam-e"><svg class="ffs__ok" viewBox="0 0 16 16" aria-hidden="true"><path d="M3 8.5l3 3 7-7"/></svg></div><p class="ffs__e" id="ffs-naam-e"></p></div>
<div class="ffs__f" data-f="email"><label class="ffs__l" for="ffs-email">E-mailadres *</label><div class="ffs__ctl"><input class="ffs__i" id="ffs-email" name="email" type="email" inputmode="email" autocomplete="email" required aria-describedby="ffs-email-e"><svg class="ffs__ok" viewBox="0 0 16 16" aria-hidden="true"><path d="M3 8.5l3 3 7-7"/></svg></div><p class="ffs__e" id="ffs-email-e"></p></div>
<div class="ffs__f" data-f="tel"><label class="ffs__l" for="ffs-tel">Telefoon <small>(optioneel)</small></label><div class="ffs__ctl"><input class="ffs__i" id="ffs-tel" name="tel" type="tel" inputmode="tel" autocomplete="tel" aria-describedby="ffs-tel-e"><svg class="ffs__ok" viewBox="0 0 16 16" aria-hidden="true"><path d="M3 8.5l3 3 7-7"/></svg></div><p class="ffs__e" id="ffs-tel-e"></p></div>
<div class="ffs__f ffs__f--wide" data-f="bericht"><label class="ffs__l" for="ffs-bericht">Waar gaat het om? *</label><div class="ffs__ctl"><textarea class="ffs__i" id="ffs-bericht" name="bericht" rows="3" required aria-describedby="ffs-bericht-e"></textarea><svg class="ffs__ok" viewBox="0 0 16 16" aria-hidden="true"><path d="M3 8.5l3 3 7-7"/></svg></div><p class="ffs__e" id="ffs-bericht-e"></p></div>
</div>
<div class="ffs__act"><button class="ffs__btn" type="submit" aria-disabled="true" aria-describedby="ffs-hint"><span class="ffs__spin" aria-hidden="true"></span><span class="ffs__btn-l">Verstuur bericht</span></button><p class="ffs__hint" id="ffs-hint">Nog 3 velden te gaan</p></div>
</form>
<div class="ffs__done" tabindex="-1" hidden><svg class="ffs__done-i" viewBox="0 0 40 40" aria-hidden="true"><circle cx="20" cy="20" r="18"/><path d="M12 20.5l5.5 5.5L28 15"/></svg><h3 class="ffs__h">Bericht verstuurd</h3><p class="ffs__sub ffs__done-t"></p><button type="button" class="ffs__again">Nog een bericht sturen</button></div>
<p class="ffs__sr" aria-live="polite"></p>
</div></div>
</div>

Meer uit formulieren & invoer

Iets gezien dat je mooi vindt?

Zet het in je selectie en stuur hem op. Dan bouwen we je site eromheen, in jouw huisstijl.

Neem contact op →