Pilihan topping tidak saling meniadakan: pengguna boleh memakai susu oat dan cokelat sekaligus, atau tidak memakai keduanya. Untuk pilihan model ini, HTML menyediakan type="checkbox" — kotak centang yang tiap-tiapnya berdiri sendiri, tercentang atau tidak, tanpa peduli tetangganya.
Kotak kecil ini menyimpan satu kejutan perilaku yang membedakannya dari semua kontrol lain: nilai yang tak dicentang tidak terkirim sama sekali — bukan terkirim kosong, bukan terkirim “tidak”. Aturan kecil ini berakibat besar di sisi server.
Kotak Centang yang Saling Mandiri #
Aturannya: satu input type="checkbox" adalah satu keputusan biner — dicentang atau tidak. Atribut checked pada markup membuat kotak tercentang sejak halaman dibuka. Mekanismenya: saat form dikirim, hanya kotak yang sedang tercentang yang menyumbang pasangan name=value; sisanya seolah tidak pernah ada.
Perilaku required pada checkbox juga khas: yang diperiksa bukan isian, melainkan keadaan tercentang — pasangan persetujuan sebelum data boleh berangkat.
Beberapa Kotak, Satu name #
Beberapa checkbox dengan atribut name yang sama membentuk daftar nilai berulang. Tiga kotak bernama topping menghasilkan nol sampai tiga pasangan topping=... — sesuai jumlah yang dicentang. Nilai pembedanya diletakkan pada atribut value masing-masing kotak.
Contoh: Pilihan Topping #
<form action="/pesan" method="post">
<p>Topping tambahan:</p>
<input type="checkbox" id="susu-oat" name="topping" value="susu-oat" checked>
<label for="susu-oat">Susu oat</label>
<input type="checkbox" id="cokelat" name="topping" value="cokelat">
<label for="cokelat">Cokelat</label>
<input type="checkbox" id="keju" name="topping" value="keju">
<label for="keju">Keju</label>
<p>
<input type="checkbox" id="setuju" name="setuju" value="ya" required>
<label for="setuju">Saya setuju dengan ketentuan kelas</label>
</p>
<button type="submit">Pesan</button>
</form>Data yang terkirim bila susu oat dibiarkan tercentang, keju tak dicentang, dan persetujuan dicentang:
topping=susu-oat&setuju=yaDemo berikut memakai dua kotak topping — klik teksnya, bukan kotak kecilnya: seluruh label yang bergaris adalah area centang. Centang keduanya lalu tekan Pesan; lepas satu centang dan kirim lagi untuk melihat pasangannya ikut hilang.
Query yang tampil memuat hanya kotak yang sedang tercentang — dua kotak dicentang berarti dua pasangan topping, satu kotak lepas berarti pasangannya tidak hadir sama sekali. Skrip kecil pada demo menahan perpindahan supaya query tetap terlihat di halaman; pada form sungguhan bertuju https://example.com/pesan, browser membuka alamat itu lengkap dengan query-nya.
Mari kita telaah kode dan hasilnya:
- Baris 3–8 (tiga kotak
topping):namesama pada ketiganya membentuk daftar —valuemembedakan anggota daftarnya. - Baris 3 (
checked): susu oat tercentang sejak awal; pengguna bebas menghapusnya, dan nilai pun ikut hilang dari kiriman. - Hasil terkirim:
cokelatdankejutak muncul sama sekali — kotak yang tak dicentang tidak menyumbang apa pun, bukantopping=kosong. - Baris 10 (
requiredpada persetujuan): submit ditahan selama kotak persetujuan belum dicentang — pola standar untuk ketentuan layanan. - label dengan
for/id: menempelkan teks pada kotaknya — klik pada teks ikut mencentang kotak. Peran label dibahas tuntas pada chapter Label.
Ringkasan #
- Checkbox = keputusan mandiri: dicentang atau tidak, satu kotak tak peduli kotak lain.
- Hanya kotak tercentang yang terkirim; yang lain tidak muncul sama sekali.
namesama +valueberbeda membentuk daftar nilai berulang.checkedmengatur keadaan awal;requiredmemaksa persetujuan sebelum submit.
Chapter berikutnya memaksa pilihan tunggal: radio button dan aturan grupnya.