Forms: Validasi — HTML

Pernah submit form yang tiba-tiba muncul tulisan "email tidak valid" merah pas kamu ngosongin field? Itu validasi. Bisa di-handle pake JavaScript ribet, tapi…

Validasi artinya mengecek isian form sebelum dikirim: sudah diisi belum, cukup panjang gak, formatnya benar gak. HTML punya atribut validasi bawaan buat itu. Kalau ada aturan yang dilanggar, browser membatalkan pengiriman dan menunjukkan pesan di kolom yang salah, tanpa JavaScript sama sekali.

🧪 Tebakan cepat: browser sudah mengecek semua isian form. Server masih perlu mengecek lagi gak? Tebak dulu, jawabannya ada di bagian "Browser cuma lapisan pertama".

Wajib diisi dan panjang minimal

<form>
  <label for="nama">Nama pengguna</label>
  <input type="text" id="nama" name="nama" required minlength="3">

  <label for="sandi">Kata sandi</label>
  <input type="password" id="sandi" name="sandi" required>

  <button type="submit">Daftar</button>
</form>

Yang baru di sini cuma dua atribut, sisanya sudah kamu kenal:

Semua kolom dan tombolnya ada di dalam <form> yang sama. Browser cuma mengecek dan mengirim kolom yang ada di dalam form itu.

Atribut validasi lainnya

<input type="email" name="email" required placeholder="[email protected]">

Kolom ini harus diisi, dan isinya harus berbentuk alamat email (ada @-nya), karena type="email" membawa pengecekan formatnya sendiri. placeholder bukan aturan: itu teks contoh abu-abu di dalam kolom, dan hilang begitu pengunjung mulai mengetik.

Atribut lain yang sering dipakai:

Buat teks panjang yang bisa beberapa baris, pakai <textarea>. Atribut validasinya sama: <textarea name="pesan" required minlength="10"></textarea>.

Browser cuma lapisan pertama

Semua pengecekan ini jalan di browser pengunjung. Orang yang paham bisa menghapus atributnya lewat DevTools, atau mengirim data langsung ke server tanpa lewat form. Jadi validasi HTML itu buat membantu pengunjung mengisi dengan benar, dan server tetap harus mengecek ulang semua aturannya sebelum menyimpan data.

⚠️ Jebakan yang sering ketemu

TL;DR: required bikin kolom wajib diisi, minlength dan maxlength mengatur panjang teks, min dan max batas angka, type="email" mengecek format email, dan pattern mencocokkan pola. Kalau aturan dilanggar, browser membatalkan pengiriman dan menunjukkan pesan. Kolom dan tombolnya harus di dalam <form>. Ini cuma lapisan pertama: server tetap mengecek ulang.

Yang akan kamu pelajari