112 Menggunakan input
Tipe untuk Validasi Data
Validasi data adalah pilar penting dalam pengembangan aplikasi modern. Baik aplikasi berbasis web maupun mobile, memastikan bahwa data yang dimasukkan pengguna valid sebelum diproses sangatlah krusial demi menjaga integritas, keamanan, dan kenyamanan pengguna. Sebagai seorang engineer, sering kali kita dihadapkan pada pertanyaan: Bagaimana memanfaatkan fitur HTML5 seperti atribut type
pada elemen input
untuk memperkuat validasi data pada sisi klien?
Di artikel kali ini, saya ingin membahas tuntas tentang pemanfaatan berbagai tipe pada elemen input
HTML untuk validasi data. Kita juga akan lihat bagaimana cara mengkombinasikan validasi bawaan (constraint validation API
) dengan validasi kustom menggunakan JavaScript, beserta contoh kode, simulasi, dan alur proses validasi secara visual.
1. Memahami Elemen Input dan Atribut type
Awal mula input paling populer adalah <input type="text">
—field serbaguna yang menerima semua karakter string. Namun, dengan perkembangan kebutuhan dan standar web, HTML5 kini menyediakan banyak tipe input
demi membantu validasi data pada level browser, jauh sebelum data dikirim ke server.
Sebagian tipe data pada elemen input
yang umum digunakan antara lain:
Tipe Input | Deskripsi | Validasi Bawaan |
---|---|---|
text | Input teks umum | Tidak ada |
Alamat email | Format email harus benar | |
number | Numerik (angka bulat/desimal) | Hanya angka, bisa pakai min, max, step |
tel | Nomor telepon (tidak terlalu restriktif) | Pola karakter digit |
url | URL/link | Format URL must valid |
date | Tanggal (kalender) | Format tanggal tertentu yang valid |
password | Sandi, sering dipakai dengan pola/minlength | Tidak terlihat (masking karakter) |
checkbox | Pilihan biner (aktif/tidak) | - |
radio | Pilihan salah satu dari beberapa | - |
Pertanyaan klasik: Apa bedanya pakai validasi browser dan buatan sendiri di JavaScript?
Jawabannya: validasi browser lebih cepat, tanpa perlu JavaScript, dan tidak bisa dimanipulasi jika JavaScript dimatikan oleh pengguna. Namun, sering kali validasinya tidak cukup, terutama untuk pola atau logika bisnis khusus.
2. Studi Kasus: Formulir Pendaftaran
Misalkan kita ingin membuat sebuah formulir pendaftaran sederhana, dengan kolom berikut:
- Nama lengkap (wajib, hanya alfabet dan spasi)
- Email (harus format email)
- Umur (harus angka, minimal 18)
- Website pribadi (opsional, jika diisi harus URL valid)
- Tanggal lahir (wajib, antara 1980–2007)
Kita mulai dengan markup HTML:
<form id="registerForm">
<label>
Nama Lengkap:
<input type="text" name="fullname" required pattern="[A-Za-z ]+">
</label><br>
<label>
Alamat Email:
<input type="email" name="email" required>
</label><br>
<label>
Umur:
<input type="number" name="age" required min="18" max="120">
</label><br>
<label>
Website:
<input type="url" name="website" placeholder="https://contoh.com">
</label><br>
<label>
Tanggal Lahir:
<input type="date" name="dob" required min="1980-01-01" max="2007-12-31">
</label><br>
<button type="submit">Daftar</button>
</form>
<div id="output"></div>
Penjelasan:
required
menandakan field wajib diisi.pattern
pada nama memastikan hanya huruf dan spasi diterima.type="email"
,type="number"
,type="url"
, dantype="date"
otomatis memvalidasi sesuai tipe data.- Semua pembatasan sederhana dan user-friendly, memanfaatkan fitur HTML5.
3. Simulasi Validasi Browser
Apa yang terjadi jika ada input yang tidak valid? Mari kita lihat alur proses validasinya.
flowchart TD A[User isi form & klik submit] B{Ada input tidak valid?} C[Tampilkan pesan error dari browser] D[Lanjut proses submit] A --> B B -- Ya --> C B -- Tidak --> D
Browser akan otomatis:
- Memblokir submit
- Menandai field error (dengan border merah, dsb)
- Mengembalikan pesan error sesuai tipe input
Simulasi Error
Field | Data Diisi | Status Validation | Pesan Browser |
---|---|---|---|
Nama lengkap | “John9” | Salah (karena angka) | “Value doesn’t match the pattern” |
“john#email.com” | Salah (bukan bentuk email) | “Please include an ‘@’ …” | |
Umur | 12 | Salah (< 18) | “Value must be > 17” |
Website | “websaya” | Salah (bukan url) | “Please enter a URL” |
Tgl lahir | 2010-05-01 | Salah (> 2007) | “Value must be before ….” |
4. Validasi Lanjutan: JavaScript Kustom
Bagaimana jika aturan kita lebih kompleks? Misal validasi: “Nama tidak boleh hanya satu kata”, “Website wajib https”, dsb.
Gunakan constraint validation API di JavaScript untuk mengontrol tingkah laku form:
document.getElementById('registerForm').addEventListener('submit', function(e) {
const fullname = this.fullname.value.trim();
const website = this.website.value.trim();
let errors = [];
// Validasi khusus: Nama harus > 1 kata
if(fullname.split(' ').length < 2) {
errors.push("Nama lengkap harus > 1 kata.");
}
// Website: jika diisi, harus https
if(website && !website.startsWith("https://")) {
errors.push("Website harus diawali https://");
}
if(errors.length > 0) {
e.preventDefault();
document.getElementById('output').innerHTML = errors.join("<br>");
}
});
5. Kombinasi Input Tipe & Validasi Script
Validasi sisi klien ideal:
- Menyaring error umum via tipe
input
- Menyaring error logika via script
Manfaat:
- UX lebih baik — error muncul sebelum submit ke server
- Beban server minor, karena error bisa difilter sebelum dikirim
- Developer dapat membuat validasi bisnis tanpa mengorbankan kemudahan desain UI
6. Best Practice dan Caveat
Kelebihan:
- Mudah di-implementasi, maintainable
- Otomatis adaptif (misal keyboard numerik di mobile saat tipe number)
- Mendukung accessibility (misal keterangan error langsung oleh browser/reader)
Keterbatasan:
- Validasi browser bisa dilewati (HTML bisa diubah di DevTools)
- Tidak dapat mengganti semua kebutuhan validasi bisnis
- Tampilan error native browser tidak selalu konsisten tiap platform
Ingat: Validasi sisi server tetap wajib!
7. Kesimpulan
Menggunakan berbagai tipe elemen input
di HTML, seperti type="email"
, type="number"
, dan sejenisnya merupakan langkah efisien dan elegan untuk mempercepat validasi data pada sisi klien. Sangat disarankan untuk selalu mengkombinasikannya dengan logika validasi kustom di JavaScript, dan never trust client-side only—selalu validasi sekali lagi di sisi server.
Dengan pemahaman dan implementasi yang tepat, validasi berbasis atribut type
di input
akan membawa aplikasi web kita menjadi lebih user-friendly, aman, dan mudah dipelihara.
Bonus: Checklist Cepat
- Gunakan
type
input sesuai data yang diminta - Terapkan atribut
required
,pattern
,min
,max
,step
sesuai kebutuhan - Tambahkan validasi kustom via JavaScript untuk logika bisnis yang rumit
- Selalu validasi ulang di sisi server
Demikian pembahasan kali ini. Jika Anda punya pengalaman menarik tentang validasi memakai tipe input atau pertanyaan seputar constraint validation, share di kolom komentar! 🚀
111 Menambahkan Mutation ke Skema gqlgen
Artikel Terhangat
111 Menambahkan Mutation ke Skema gqlgen
10 Oct 2025
108 Menangani Resolver Otomatis dan Manual
10 Oct 2025
106 Menulis Skema `.graphqls` untuk gqlgen
10 Oct 2025

111 Menambahkan Mutation ke Skema gqlgen

108 Menangani Resolver Otomatis dan Manual
