Form HTML digunakan untuk mengumpulkan input dari pengguna. Form dapat berisi berbagai macam elemen input seperti text field, checkbox, radio button, dropdown, dan lainnya.
Form dalam HTML
Pelajari cara membuat form interaktif untuk mengumpulkan input dari pengguna dengan berbagai jenis elemen input dan validasi.
Dasar-dasar Form HTML
🏗️ Struktur Dasar Form
<form action="/proses.php" method="post">
<label for="nama">Nama Lengkap:</label>
<input type="text" id="nama" name="nama" required>
<button type="submit">Kirim Form</button>
</form>
<form action="/proses.php" method="post">
<!-- action: URL yang memproses form -->
<!-- method: Cara pengiriman data (POST/GET) -->
<label for="nama">Nama Lengkap:</label>
<!-- label: Teks penjelas untuk input -->
<input type="text" id="nama" name="nama" required>
<!-- type: Jenis input -->
<!-- id: Identifier unik -->
<!-- name: Nama field untuk backend -->
<!-- required: Validasi wajib diisi -->
<button type="submit">Kirim Form</button>
<!-- type="submit": Tombol untuk mengirim form -->
</form>
📋 Atribut Penting Form
action
Required
URL yang akan memproses data form ketika dikirim
action="/proses.php"
method
Required
HTTP method untuk mengirim data (GET atau POST)
method="post"
enctype
Optional
Encoding type untuk form data (penting untuk upload file)
enctype="multipart/form-data"
target
Optional
Dimana hasil form akan ditampilkan
target="_blank"
Elemen-elemen Input Form
<input type="text">
Dasar
<input type="text"
name="nama"
placeholder="Nama Lengkap"
required>
placeholder
required
maxlength
<input type="email">
Validasi
<input type="email"
name="email"
placeholder="email@contoh.com"
required>
required
pattern
multiple
<input type="password">
Keamanan
<input type="password"
name="password"
placeholder="Password"
minlength="6">
minlength
maxlength
pattern
<input type="number">
Numerik
<input type="number"
name="usia"
min="1"
max="100"
placeholder="Usia">
min
max
step
<input type="date">
Tanggal
<input type="date"
name="tanggal_lahir">
min
max
<input type="checkbox">
Multiple
<label>
<input type="checkbox"
name="hobi"
value="membaca">
Membaca
</label>
<label>
<input type="checkbox"
name="hobi"
value="olahraga">
Olahraga
</label>
checked
value
<input type="radio">
Single
<label>
<input type="radio"
name="jenis_kelamin"
value="L">
Laki-laki
</label>
<label>
<input type="radio"
name="jenis_kelamin"
value="P">
Perempuan
</label>
checked
value
<select>
Dropdown
<select name="kota">
<option value="">Pilih Kota</option>
<option value="jakarta">Jakarta</option>
<option value="bandung">Bandung</option>
</select>
multiple
size
<textarea>
Multiline
<textarea name="pesan"
rows="4"
placeholder="Tulis pesan Anda...">
</textarea>
rows
cols
maxlength
<input type="file">
File
<input type="file"
name="foto"
accept="image/*">
accept
multiple
Struktur & Aksesibilitas Form
Kode HTML
<form>
<div class="form-group">
<label for="nama">Nama Lengkap:</label>
<input type="text" id="nama" name="nama">
</div>
<fieldset>
<legend>Jenis Kelamin</legend>
<div class="radio-group">
<label>
<input type="radio" name="gender" value="L">
Laki-laki
</label>
<label>
<input type="radio" name="gender" value="P">
Perempuan
</label>
</div>
</fieldset>
</form>
Preview & Keuntungan
Aksesibilitas untuk screen reader
Klik label untuk fokus input
Struktur yang terorganisir
Kode HTML
<form>
Nama Lengkap:
<input type="text" name="nama">
Jenis Kelamin:
<input type="radio" name="gender" value="L"> Laki-laki
<input type="radio" name="gender" value="P"> Perempuan
</form>
Preview & Masalah
Tidak ada hubungan label-input
Tidak bisa klik teks untuk fokus
Buruk untuk aksesibilitas
Validasi Form HTML5
required
Wajib
Field harus diisi sebelum form dapat dikirim
minlength
Panjang
Panjang minimal teks yang diizinkan
pattern
Regex
Validasi berdasarkan regular expression
min/max
Rentang
Nilai minimal dan maksimal untuk number/date
Contoh Form Lengkap
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Form Registrasi</title>
<style>
.form-container {
max-width: 600px;
margin: 0 auto;
padding: 20px;
}
.form-group {
margin-bottom: 15px;
}
label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
input, select, textarea {
width: 100%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 4px;
}
fieldset {
border: 1px solid #ddd;
padding: 15px;
margin-bottom: 15px;
border-radius: 4px;
}
button {
background: #007bff;
color: white;
padding: 10px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
}
</style>
</head>
<body>
<div class="form-container">
<h1>Form Registrasi</h1>
<form action="/register" method="post">
<fieldset>
<legend>Informasi Pribadi</legend>
<div class="form-group">
<label for="nama">Nama Lengkap *</label>
<input type="text" id="nama" name="nama" required minlength="3">
</div>
<div class="form-group">
<label for="email">Email *</label>
<input type="email" id="email" name="email" required>
</div>
<div class="form-group">
<label for="password">Password *</label>
<input type="password" id="password" name="password" required minlength="6">
</div>
</fieldset>
<fieldset>
<legend>Informasi Tambahan</legend>
<div class="form-group">
<label>Jenis Kelamin *</label>
<div>
<label><input type="radio" name="gender" value="L" required> Laki-laki</label>
<label><input type="radio" name="gender" value="P"> Perempuan</label>
</div>
</div>
<div class="form-group">
<label for="kota">Kota</label>
<select id="kota" name="kota">
<option value="">Pilih Kota</option>
<option value="jakarta">Jakarta</option>
<option value="bandung">Bandung</option>
</select>
</div>
<div class="form-group">
<label for="pesan">Pesan</label>
<textarea id="pesan" name="pesan" rows="4"></textarea>
</div>
</fieldset>
<button type="submit">Daftar</button>
<button type="reset">Reset</button>
</form>
</div>
</body>
</html>
Form Registrasi Demo
Latihan Praktik
Buat Form Kontak yang Interaktif
Menengah🎯 Tujuan:
Buat form kontak yang profesional dengan berbagai jenis input, validasi, dan struktur yang baik untuk aksesibilitas.
📋 Requirements:
Form dengan action dan method POST
Field nama, email, subjek, dan pesan
Validasi required untuk field wajib
Dropdown untuk jenis pertanyaan
Pengelompokan field dengan fieldset
Label yang terhubung dengan input
Tombol submit dan reset
Style dasar untuk tampilan yang rapi
Tip Pro: Gunakan
fieldset dan legend untuk mengelompokkan field terkait,
dan selalu gunakan label dengan atribut for untuk aksesibilitas terbaik!