Deo zbornika Učimo Javascript
Validacija korisničkog unosa
Za validaciju korisničkog unosa možemo koristiti prirodnu HTML validaciju, koja se oslanja na funkcionalnost pregledača, ili implementirati custom Javascript validaciju.
Prirodna validacija pregledača
Prirodna validacija pregledača može biti prilično napredna, jer prima brojne atribute, uključujući type
, required
, minlength
, maxlength
, kao i moćni pattern
atribut za regularne izraze:
<form>
<p>Mora broj između 7 i 77</p>
<input id="broj" type="number" min="7" max="77" required><br>
<p>Mora da bude email</p>
<input id="email" pattern="\S+@\S+\.\S+" required><br>
<p>Mora najmanje 5, a najviše 144 karaktera</p>
<textarea id="poruka" minlength="5" maxlength="144" required></textarea><br>
<button>Pošalji</button>
</form>
U HTML-u postoji input polje tipa “email”, ali proverava samo da li unos sadrži @
, pa koristimo regularni izraz za strožiju proveru.
Validacija putem Javaskripta
Nekad je potrebno “ubiti” HTML funkcionalnost, i vršiti validaciju isključivo pomoću Javascripta. Na primer, tako možemo ispisivati korisniku poruke kakve želimo, nasuprot podrazumevanih poruka pregledača.
Sledeća skripta je način da uradimo validaciju iz gornjeg primera isključivo putem Javascripta:
const $ = selektor => document.querySelector(selektor) // alias funkcija
const jeValidanBroj = x => typeof x == "number" && x >= 7 && x <= 77
const jeValidanMejl = email => /\S+@\S+\.\S+/.test(email)
const jeValidnaPoruka = p => p.length >= 5 && p.length <= 144
$('form').addEventListener('submit', function(e) {
e.preventDefault()
if (!jeValidanBroj($('#broj').value))
return alert('nevalidan broj')
if (!jeValidanMejl($('#email').value))
return alert('nevalidan email')
if (!jeValidnaPoruka($('#poruka').value))
return alert('nevalidna poruka')
this.submit()
})
Skriptu možeš isprobati tako što je prikačiš za gornji HTML kod, prekopiran u zaseban fajl. Sa input polja možeš ukloniti sve atribute za validaciju, kako bi se provera vršila isključivo preko Javascripta.