Episode ini membedah formulir HTML: elemen form dengan action dan method, kontrol input dari teks sampai radio, textarea, select, dan button, lengkap dengan praktik form login.

Sejauh ini halaman kalian hanya menampilkan informasi. Episode 8 membuka pintu interaksi dengan pengguna melalui formulir HTML dan kontrol input — cara mengumpulkan teks, pilihan, dan aksi dari pengunjung halaman.
Formulir adalah gerbang banyak fitur web: login, pencarian, pendaftaran, dan komentar. Memahami form, input, textarea, select, dan button adalah keterampilan yang akan terus kalian pakai, termasuk saat membangun validasi di episode 9 dan 17.
form membungkus semua kontrol dan menentukan ke mana data dikirim:
<form action="/proses-pendaftaran" method="post">
<p>Isi data di bawah ini.</p>
</form>action berisi alamat tujuan pengiriman data.method menentukan cara pengiriman: get atau post.Dengan method="get", data terlihat di URL dalam bentuk query string, cocok untuk pencarian. Dengan method="post", data dikirim di badan permintaan HTTP, cocok untuk data sensitif seperti kata sandi.
Setiap kontrol yang datanya ingin dikirim wajib punya atribut name. Pasangan name dan nilai yang diisi pengguna dikirim sebagai data formulir — kontrol tanpa name diabaikan.
input adalah kontrol paling fleksibel; perilakunya bergantung pada type:
<p>
<label>Nama pengguna</label>
<input type="text" name="nama" maxlength="50">
</p>
<p>
<label>Kata sandi</label>
<input type="password" name="sandi">
</p>type="password" menyembunyikan karakter yang diketik.maxlength membatasi jumlah karakter.Praktik terbaik penulisan label yang benar akan kita bahas tuntas di episode 9.
Untuk pilihan biner dan pilihan tunggal:
<p>
<label>
<input type="checkbox" name="setuju" value="ya">
Saya setuju dengan ketentuan.
</label>
</p>
<p>
<label>
<input type="radio" name="ukuran" value="kecil">
Ukuran kecil
</label>
</p>
<p>
<label>
<input type="radio" name="ukuran" value="besar">
Ukuran besar
</label>
</p>Radio dengan name yang sama membentuk satu grup — hanya satu yang bisa dipilih.
select membuat menu pilihan turun; textarea untuk teks multi-baris:
<p>
<label>Kota</label>
<select name="kota">
<option value="jkt">Jakarta</option>
<option value="bdg">Bandung</option>
</select>
</p>
<p>
<label>Pesan</label>
<textarea name="pesan" rows="4" cols="40"></textarea>
</p>rows dan cols di textarea menentukan tinggi dan lebar awal. Textarea menampung teks kosong di antara tag pembuka dan penutup sebagai nilai awal.
button memiliki tiga nilai type:
submit: mengirim formulir, nilai default.reset: mengosongkan semua kontrol.button: tidak melakukan apa pun sendiri — untuk dihubungkan dengan JavaScript.<button type="submit">Kirim</button>
<button type="reset">Bersihkan</button>
<button type="button">Hitung Total</button>Tombol submit yang tidak menyebut type tetap berperilaku sebagai submit. Untuk tombol yang akan diisi JavaScript, selalu tulis type="button" secara eksplisit.
Gabungkan kontrol yang sudah dipelajari:
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Masuk</title>
</head>
<body>
<h1>Masuk ke Akun</h1>
<form action="/masuk" method="post">
<p>
<label>Nama pengguna</label>
<input type="text" name="nama" maxlength="30">
</p>
<p>
<label>Kata sandi</label>
<input type="password" name="sandi">
</p>
<p>
<label>
<input type="checkbox" name="ingat" value="ya">
Ingat saya
</label>
</p>
<p>
<button type="submit">Masuk</button>
</p>
</form>
</body>
</html>Setelah halaman tampil, buka DevTools dan periksa objek form lewat konsol dengan document.forms[0] untuk melihat properti formulir dan kontrolnya.
Episode 8 membuat halaman kalian menerima masukan: form dengan action dan method, input dengan berbagai type, textarea, select, checkbox, radio, dan button dengan tiga tipe.
Inti yang harus dibawa pulang:
form membungkus kontrol; action dan method menentukan tujuan pengiriman.name tidak mengirim data.type pada input menentukan perilaku; type pada button menentukan aksi.name sama membentuk satu grup.placeholder hanya contoh teks, bukan pengganti label.Di episode 9 selanjutnya kita akan membahas label, fieldset, dan aksesibilitas form — menghubungkan label dengan kontrol, mengelompokkan pilihan dengan fieldset dan legend, serta kesalahan yang sering merusak aksesibilitas formulir.