Inputvelden controleren

Controleren van een inputveld

Zoals je bij HTML hebt geleerd kan je inputvelden in een formulier bepaalde informatie/ attributen meegeven om deze voordat het formulier verstuurd wordt gecontroleerd worden, is de informatie niet correct, dan wordt het formulier niet verstuurd en krijg je een foutmelding te zien.

<form method="post">
  Username: <input type="text" name="username" required><br>=>
  Email: <input type="email" name="useremail" required><br>
  <input type="submit" value="verstuur">
</form>
In het bovenstaande formulier zal als je de velden leeg laat, een fout komen dat de username en email adres gevuld moeten zijn.

LET OP: Altijd maar 1 veld en 1 controle

Je krijgt als je op de submit-knop klikt maximaal 1 foutmelding te zien over 1 oorzaak.

  • Username leeg & email adres leeg - Je krijgt de foutmelding dat username gevuld moet zijn.
  • Username gevuld & email adres leeg - Je krijgt de foutmelding dat email gevuld moet zijn.
  • Username & email gevuld, maar incorrect e-mail adres - Je krijgt de foutmelding dat het email adres niet correct is.
  • Alles correct ingevuld, je kan het formulier versturen

Controleren met JavaScript

Met JavaScript kan je ook een los inputveld, ook als het niet in een formulier staat, controleren. Dit kan met twee methodes die je op een inputveld-element kan aanroepen.

.checkValidity()

Met de methode .checkValidity() krijg je een boolean terug (true/ false). Het is true als het input veld volgens de methode goed is, false als er iets fout is. In onderstaand voorbeeld is er in de HTML een input veld als volgt:

<input type="email" class="useremail" required>
const userEmailElement = document.querySelector('.useremail');
if (!userEmailElement.checkValidity()) {
    alert('Dat is geen geldig e-mail adres');
}
Kijk goed naar de uitroepteken ! in de if-conditie. Als chackValidity false is zal de code van de if-statement uitgevoerd worden.

.reportValidity()

Een andere optie is om de controle van het inputveld te tonen (en te controleren) je hoeft dan zelf geen code/ popup/ alert te schrijven om de gebruiker op de hoogte te stellen.

const userEmailElement = document.querySelector('.useremail');
if (!userEmailElement.checkValidity()) {
    userEmailElement.reportValidity();
}

Eigen JavaScript validatie

Natuurlijk kan je ook eigen JavaScript validatie gebruiken. Dit is soms handiger, denk bijvoorbeeld aan dat het makkelijk is om de HTML aan te passen (bv. de required attribute via de developers console van een element te halen. En dan is het met alleen JavaScript wat lastiger.

Of je wilt een invoerwaarde controleren of dit een bepaalde naam (van een vereniging/ school) of een deel van een e-mail adres (@rocmondriaan) bevat. Dergelijke 'lastigere' controles kan je niet met de basis HTML attributen opvangen en dan zal je met de .value attribute op het element de waarde moeten ophalen en eigen validatie schrijven.

HTML Attribute cheatsheet

In de onderstaande lijst vind je de meest voorkomende attributen en types die je kan gebruiken voor formulier validatie/ ondersteuning. Bij onderstaande types blijft een invoerveld met text in te voeren, andere opties als type="checkbpx" of type="button" staan niet in de lijst.
LET OP: de weergave van de velden kan verschillen per webbrowser!

type attribute

<input type="text" name="username">

Waarde Omschrijving
text Dit is de standaard, alles mag/ is goed
color Geeft een color-picker
password Veld is gelijk aan text, maar de invoer is verborgen
email Veld moet een geldig e-mail adres bevatten (iets@iets.tld)
number Invoer moet een geldig getal zijn, met attribute min/ max kan je minimale en maximale waarde aan geven, met step met hoeveel het veld om hoog mag/ kan
range Maakt een slider tussen de min en max attribute (standaard 0-100)
date Je krijgt een datum-picker, veld moet een geldige datum zijn
time Je krijgt een tijd (uren/ minuten) picker, invoer moet geldige tijd zijn (HH:MM)
datetime Combinatie van bovenstaande
week/month Je krijgt een week of maand picker
url Invoer moet een correcte URL zijn

type attribute

<input type="text" required name="username">

Waarde Omschrijving
required Het veld is verplicht
min="1" Minimale waarde bij een range,number of date type
max="100" Maximale waarde bij een range, number of date type
minlength="5" Minimaal aantal karakters van een invoerveld
maxlength="10" Maximaal aantal karakters van een invoerveld
step="0.01" Geeft bij een getal invoer aan met hoeveel je omhoog of naar beneden mag gaan, ook handig om aan te geven dat je met decimalen wilt werken

Jouw JavaScript

Op de MBO-SD Fiddle site kan je meer oefenen met deze stof.

Klik hier voor de MBO-SD Fiddle site