Gelombang kelas hanya bisa dipilih satu: mendaftar Gelombang 1 berarti tidak mendaftar Gelombang 2. Pilihan yang saling meniadakan seperti ini adalah wilayah type="radio" — tombol pilihan yang bekerja sebagai satu grup dengan satu jawaban.
Nama “radio” diwarisi dari tombol tuning radio lama: menekan satu kanal otomatis melepas kanal lain. HTML meniru perilaku itu dengan aturan yang mengejutkan banyak penulis baru: pengelompokannya ditentukan oleh name, bukan oleh posisi atau tampilan.
Pilih Satu dari Grup #
Aturannya: beberapa input type="radio" yang memakai name sama membentuk satu grup, dan hanya satu anggota grup yang boleh terpilih dalam satu waktu. Mekanismenya: saat sebuah radio dipilih, browser otomatis melepas pilihan radio lain yang berbagi name sama — kita tidak perlu menulis JavaScript apa pun untuk saling melepas itu.
Tiga atribut pelengkapnya:
value— membedakan tiap anggota; pasanganname=valueyang terkirim mengikuti radio terpilih.checked— menandai pilihan awal; tanpacheckeddi mana pun, seluruh grup dimulai kosong — keadaan sah, meski memaksa pengguna memilih.disabled— mematikan satu opsi saja tanpa melumpuhkan grupnya.
Contoh: Memilih Gelombang Kelas #
<form action="/daftar" method="post">
<p>Pilih gelombang kelas:</p>
<input type="radio" id="gel-1" name="gelombang" value="gelombang-1">
<label for="gel-1">Gelombang 1 — Juli 2026</label>
<input type="radio" id="gel-2" name="gelombang" value="gelombang-2" checked>
<label for="gel-2">Gelombang 2 — Agustus 2026</label>
<input type="radio" id="gel-3" name="gelombang" value="gelombang-3" disabled>
<label for="gel-3">Gelombang 3 — September (penuh)</label>
<button type="submit">Daftar</button>
</form>Data yang terkirim saat form dibuka dan langsung dikirim:
gelombang=gelombang-2Klik ketiga opsi bergantian pada demo — memilih satu otomatis melepas pilihan lain: itulah kerja name yang sama, tanpa satu baris JavaScript. Gelombang 3 tampil redup dan tak bisa diklik karena disabled; tekan Daftar untuk melihat pasangan dari radio yang sedang aktif.
Pada demo, action diarahkan ke https://example.com/daftar — domain cadangan resmi — dan skrip kecil menahan perpindahan supaya pasangan name=value yang terkirim terlihat di halaman, persis kiriman yang diterima server; markup formnya sama persis dengan contoh di atas.
Mari kita telaah kode dan hasilnya:
- Baris 3–7 (
name="gelombang"pada ketiganya): ketiga radio adalah satu grup — memilih yang satu melepas yang lain secara otomatis. - Baris 5 (
checked): Gelombang 2 terpilih sejak awal — satu-satunya cara memberi jawaban awal; satu grup cukup satuchecked. - Baris 7 (
disabled): Gelombang 3 tampil redup dan tak bisa dipilih — opsinya tetap terbaca, penuhnya tetap diumumkan, pendaftarannya ditutup. - Hasil terkirim: hanya pasangan dari radio terpilih —
value="gelombang-2"menjadi nilai,namemenjadi kunci. - label dengan
for/id: teks opsi ikut bisa diklik — wilayah sentuh yang lega, terutama di ponsel.
Kesalahan Klasik: name Berbeda #
Contoh berikut tampak wajar di layar — tiga radio, satu baris — tapi perilakunya rusak:
<input type="radio" id="g1" name="gelombang-satu" value="gelombang-1">
<label for="g1">Gelombang 1</label>
<input type="radio" id="g2" name="gelombang-dua" value="gelombang-2">
<label for="g2">Gelombang 2</label>Kedua radio memakai name berbeda — gelombang-satu dan gelombang-dua — sehingga keduanya adalah dua grup terpisah. Akibatnya: keduanya bisa terpilih bersamaan, dan data terkirim dua pasangan sekaligus. Ingat, pengelompokan radio ditentukan name yang sama, bukan letak bersebelahan dan bukan tampilan yang mirip.
Ringkasan #
- Radio = pilih tepat satu; anggota grup dibentuk oleh
nameyang sama. valuemembedakan anggota;checkedmemberi pilihan awal;disabledmenutup satu opsi.- Tanpa
checked, grup dimulai kosong — sah, dan mengarahkan pengguna untuk memilih. namebeda = grup beda: radio tampil berdampingan namun tak saling melepas.
Chapter berikutnya menyusun pilihan dalam daftar turun: select beserta option dan optgroup.