Home Work
SaaS developmentAI developmentAPI developmentMobile app developmentGoogle Ads managementHeadless ShopifyLaravel developmentNext.js developmentReact developmentTypeScript engineeringUI/UX designSEO & AEOEcommerce development
AI solutionsB2B platformsE-commerceHospitalityLead generationLogisticsEducationProcess automationSaaS platformsStartup MVPReal estateHealthcare
LegalHealthcareReal estateFinanceHospitality
The HagueRotterdamAmsterdamUtrechtEindhovenAlmereBredaArnhemNijmegenTilburgEnschedeGroningenLeidenDelftZoetermeerDen Bosch
Studio
AboutProcessLabBlogContact

Formulierfouten compleet New

Contact form with complete error handling: inline field errors (aria-describedby), an error summary linking to the fields, success ticks per valid field, an e-mail typo hint, a button that looks disabled until valid, plus loading and success states. Small JS validation and container queries (fallback: single column).

Demo

Vraag het Glaszetter Van Dijk

Velden met * zijn verplicht. Antwoord binnen 1 werkdag.

Nog 3 velden te gaan

How to use it

  1. Paste the HTML where the forms & inputs should appear.
  2. Add the CSS to your stylesheet. All classes are prefixed, so nothing clashes with your own styles.
  3. Add the JavaScript and call init() with the element that contains the HTML.
<!-- 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>

More forms & inputs

Seen something you like?

Add it to your selection and send it over. We build your site around it, in your brand.

Get in touch →