5: Form dan Input HTML

Pengenalan Form

Form digunakan untuk mengumpulkan input dari user. Form sangat penting untuk pendaftaran, login, pencarian, dan berbagai interaksi user lainnya.

Struktur Dasar Form:

<form action="proses.php" method="POST">
    <!-- Input fields di sini -->
</form>

Atribut Form:

  • action - URL tempat data form akan dikirim
  • method - Metode pengiriman (GET atau POST)
  • name - Nama form
  • target - Tempat menampilkan response

Input Types

1. Text Input

<!-- Input text biasa -->
<label for="nama">Nama:</label>
<input type="text" id="nama" name="nama" placeholder="Masukkan nama Anda">

<!-- Input dengan nilai default -->
<input type="text" name="kota" value="Jakarta">

<!-- Input read-only -->
<input type="text" name="readonly" value="Tidak bisa diedit" readonly>

<!-- Input disabled -->
<input type="text" name="disabled" value="Disabled" disabled>

2. Password

<label for="password">Password:</label>
<input type="password" id="password" name="password">

3. Email

<label for="email">Email:</label>
<input type="email" id="email" name="email" required>

4. Number

<label for="umur">Umur:</label>
<input type="number" id="umur" name="umur" min="1" max="100" step="1">

5. Date, Time, dan DateTime

<label for="tanggal">Tanggal:</label>
<input type="date" id="tanggal" name="tanggal">

<label for="waktu">Waktu:</label>
<input type="time" id="waktu" name="waktu">

<label for="datetime">Tanggal & Waktu:</label>
<input type="datetime-local" id="datetime" name="datetime">

6. Radio Button

<p>Jenis Kelamin:</p>
<input type="radio" id="laki" name="gender" value="laki-laki">
<label for="laki">Laki-laki</label>

<input type="radio" id="perempuan" name="gender" value="perempuan">
<label for="perempuan">Perempuan</label>

7. Checkbox

<p>Hobi:</p>
<input type="checkbox" id="baca" name="hobi" value="membaca">
<label for="baca">Membaca</label>

<input type="checkbox" id="olahraga" name="hobi" value="olahraga">
<label for="olahraga">Olahraga</label>

<input type="checkbox" id="musik" name="hobi" value="musik">
<label for="musik">Musik</label>

8. File Upload

<label for="file">Upload File:</label>
<input type="file" id="file" name="file">

<!-- Multiple files -->
<input type="file" id="files" name="files" multiple>

<!-- Specific file types -->
<input type="file" id="gambar" name="gambar" accept="image/*">

9. Range (Slider)

<label for="volume">Volume:</label>
<input type="range" id="volume" name="volume" min="0" max="100" value="50">

10. Color Picker

<label for="warna">Pilih Warna:</label>
<input type="color" id="warna" name="warna" value="#ff0000">

11. URL dan Tel

<label for="website">Website:</label> <input type="url" id="website" name="website"> <label for="telepon">Telepon:</label> <input type="tel" id="telepon" name="telepon">

Textarea

Untuk input teks multi-baris:

<label for="pesan">Pesan:</label>
<textarea id="pesan" name="pesan" rows="5" cols="40" placeholder="Tulis pesan Anda..."></textarea>

Select (Dropdown)

<!-- Single select -->
<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>
    <option value="surabaya" selected>Surabaya</option>
    <option value="medan">Medan</option>
</select>

<!-- Multiple select -->
<label for="bahasa">Bahasa Pemrograman:</label>
<select id="bahasa" name="bahasa" multiple size="4">
    <option value="html">HTML</option>
    <option value="css">CSS</option>
    <option value="js">JavaScript</option>
    <option value="php">PHP</option>
</select>

<!-- Dengan optgroup -->
<label for="negara">Negara:</label>
<select id="negara" name="negara">
    <optgroup label="Asia">
        <option value="id">Indonesia</option>
        <option value="my">Malaysia</option>
        <option value="sg">Singapore</option>
    </optgroup>
    <optgroup label="Eropa">
        <option value="uk">United Kingdom</option>
        <option value="fr">France</option>
        <option value="de">Germany</option>
    </optgroup>
</select>

Button

<!-- Submit button -->
<button type="submit">Kirim</button>
<input type="submit" value="Kirim Form">

<!-- Reset button -->
<button type="reset">Reset</button>
<input type="reset" value="Reset Form">

<!-- Regular button -->
<button type="button" onclick="alert('Hello')">Klik Saya</button>
<input type="button" value="Button" onclick="alert('Hi')">

Atribut Input Penting

<!-- Required -->
<input type="text" name="nama" required>

<!-- Placeholder -->
<input type="text" name="nama" placeholder="Nama lengkap">

<!-- Maxlength -->
<input type="text" name="username" maxlength="20">

<!-- Pattern (regex) -->
<input type="text" name="kode" pattern="[A-Z]{3}" title="3 huruf besar">

<!-- Autofocus -->
<input type="text" name="nama" autofocus>

<!-- Autocomplete -->
<input type="text" name="email" autocomplete="email">

Fieldset dan Legend

Mengelompokkan input dalam form:

<form>
    <fieldset>
        <legend>Data Pribadi</legend>
        <label for="nama">Nama:</label>
        <input type="text" id="nama" name="nama"><br><br>
        
        <label for="email">Email:</label>
        <input type="email" id="email" name="email">
    </fieldset>
    
    <fieldset>
        <legend>Alamat</legend>
        <label for="jalan">Jalan:</label>
        <input type="text" id="jalan" name="jalan"><br><br>
        
        <label for="kota">Kota:</label>
        <input type="text" id="kota" name="kota">
    </fieldset>
</form>

Contoh Form Lengkap

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Form Pendaftaran</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 600px;
            margin: 50px auto;
            padding: 20px;
        }
        .form-group {
            margin-bottom: 15px;
        }
        label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
        input[type="text"],
        input[type="email"],
        input[type="password"],
        input[type="tel"],
        input[type="date"],
        select,
        textarea {
            width: 100%;
            padding: 8px;
            border: 1px solid #ddd;
            border-radius: 4px;
            box-sizing: border-box;
        }
        button {
            background-color: #4CAF50;
            color: white;
            padding: 10px 20px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
        }
        button:hover {
            background-color: #45a049;
        }
        button[type="reset"] {
            background-color: #f44336;
            margin-left: 10px;
        }
        button[type="reset"]:hover {
            background-color: #da190b;
        }
    </style>
</head>
<body>
    <h1>Form Pendaftaran Member</h1>
    
    <form action="#" 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>
            </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>
            
            <div class="form-group">
                <label for="tanggal_lahir">Tanggal Lahir:</label>
                <input type="date" id="tanggal_lahir" name="tanggal_lahir">
            </div>
            
            <div class="form-group">
                <label>Jenis Kelamin:</label>
                <input type="radio" id="laki" name="gender" value="laki-laki">
                <label for="laki" style="display: inline; font-weight: normal;">Laki-laki</label>
                
                <input type="radio" id="perempuan" name="gender" value="perempuan">
                <label for="perempuan" style="display: inline; font-weight: normal;">Perempuan</label>
            </div>
        </fieldset>
        
        <fieldset>
            <legend>Informasi Kontak</legend>
            
            <div class="form-group">
                <label for="telepon">Nomor Telepon:</label>
                <input type="tel" id="telepon" name="telepon">
            </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>
                    <option value="surabaya">Surabaya</option>
                    <option value="medan">Medan</option>
                    <option value="semarang">Semarang</option>
                </select>
            </div>
            
            <div class="form-group">
                <label for="alamat">Alamat Lengkap:</label>
                <textarea id="alamat" name="alamat" rows="4"></textarea>
            </div>
        </fieldset>
        
        <fieldset>
            <legend>Preferensi</legend>
            
            <div class="form-group">
                <label>Minat: (pilih lebih dari satu)</label>
                <input type="checkbox" id="teknologi" name="minat" value="teknologi">
                <label for="teknologi" style="display: inline; font-weight: normal;">Teknologi</label><br>
                
                <input type="checkbox" id="olahraga" name="minat" value="olahraga">
                <label for="olahraga" style="display: inline; font-weight: normal;">Olahraga</label><br>
                
                <input type="checkbox" id="musik" name="minat" value="musik">
                <label for="musik" style="display: inline; font-weight: normal;">Musik</label><br>
                
                <input type="checkbox" id="seni" name="minat" value="seni">
                <label for="seni" style="display: inline; font-weight: normal;">Seni</label>
            </div>
            
            <div class="form-group">
                <label for="foto">Upload Foto Profil:</label>
                <input type="file" id="foto" name="foto" accept="image/*">
            </div>
        </fieldset>
        
        <div class="form-group">
            <input type="checkbox" id="setuju" name="setuju" required>
            <label for="setuju" style="display: inline; font-weight: normal;">
                Saya setuju dengan syarat dan ketentuan *
            </label>
        </div>
        
        <div class="form-group">
            <button type="submit">Daftar</button>
            <button type="reset">Reset Form</button>
        </div>
    </form>
    
    <p><small>* Wajib diisi</small></p>
</body>
</html>

Latihan Artikel 5:

  1. Buat form kontak dengan nama, email, subjek, dan pesan
  2. Buat form pendaftaran dengan berbagai jenis input (text, email, password, radio, checkbox)
  3. Gunakan select dropdown untuk pilihan kota atau negara
  4. Tambahkan validasi required pada field penting
  5. Implementasikan fieldset untuk mengelompokkan input
Masuk untuk melacak progres Anda dan mengakses semua fitur

Diskusi & Komentar

Bagikan pemikiran Anda atau ajukan pertanyaan tentang artikel ini

💬 0 Komentars

Silakan login untuk memberikan komentar.
Belum Ada Komentar

Jadilah yang pertama membagikan pemikiran Anda!