BAB 4 β€’ FORM LANJUTAN & INTERAKSI DATA
<FORM>
4
HTML5
INPUT
VALID
CSS

FORM LANJUTAN & INTERAKSI DATA

FRONT END MASTERCLASS
Kelas 10  |  Semester 1  |  HTML5 Forms, Validation & Styling

Selamat datang di modul lanjutan! Di bab ini kamu akan menguasai HTML5 Form Validation, tipe input modern, elemen profesional, Form Registrasi Sekolah, hingga styling form dengan CSS. πŸš€

β–Ό Klik tombol NEXT, panah layar ❯, scroll wheel, atau geser kursor

PETA PERJALANAN

πŸ—ΊοΈ Peta Materi BAB 4

Inilah 7 pulau pengetahuan interaktif yang akan kita jelajahi. Klik NEXT untuk mulai!

FORM LANJUTAN Review &HTTP Method HTML5Inputs FormValidation ElemenPro ProjectRegistrasi BonusCSS Form Media &Landing
MATERI 1 β€’ REVIEW BAB 3 & HTTP METHOD

πŸ”„ Review BAB 3 & Pengiriman Data (GET vs POST)

Di Bab 3 kita membuat tampilan <form> dasar. Di Bab 4, kita belajar ke mana dan bagaimana data form itu dikirim ke server!

Review BAB 3: Form & Tag HTML Dasar

  • Materi BAB 3 (HTML Dasar):
    Kalian telah mempelajari kerangka <html>, <body>, serta tag dasar seperti <form>, <label>, <input>, dan <button>.
  • Keterbatasan di BAB 3:
    Form di Bab 3 baru sebatas tampilan visual (UI) di layar. Data belum diproses atau dikirim ke mana-mana.
<!-- Form Dasar BAB 3 (Hanya Tampilan UI) --> <form> <label>Nama:</label> <input type="text"> <button>Submit</button> </form>

Materi Baru BAB 4: HTTP Method GET vs POST

  • method="GET" β†’ Data ditempel di URL query string:
    domain.com/search?q=sekolah
    Cocok untuk pencarian, bookmarkable, data terlihat di URL.
  • method="POST" β†’ Data dikirim tersembunyi di Body Request HTTP:
    Payload: { email, password, foto }
    Wajib untuk registrasi, login, upload file, & data rahasia.
<!-- Form BAB 4 (Dengan Action & Method POST) --> <form action="/daftar" method="POST"> <label>Email:</label> <input type="email" name="email"> <button>Daftar</button> </form>
MATERI 2 β€’ HTML5 INPUT TYPES

πŸ“± HTML5 Input Type Lanjutan

HTML5 menyediakan berbagai tipe input pintar yang otomatis menyesuaikan virtual keyboard di HP dan melakukan validasi awal!

<!-- Email & Angka --> <input type="email" name="email"> <input type="number" name="umur"> <!-- Tanggal & File --> <input type="date" name="tgl"> <input type="file" name="foto"> <!-- Range & Warna --> <input type="range" min="0" max="100"> <input type="color">
  • email β†’ Keyboard muncul tombol @
  • number β†’ Keyboard berubah mode keypad angka
  • date β†’ Otomatis memunculkan widget Datepicker
  • file β†’ Tombol milih dokumen/foto dari peranti
  • range β†’ Slider geser nilai min s/d max
DEMO LANGSUNG β€” silakan coba interaksi!
MATERI 3A β€’ ATRIBUT VALIDASI TEKS & ANGKA

πŸ›‘οΈ Atribut Validasi: required, min/maxlength, min/max, & pattern

Validasi instan tanpa JavaScript untuk membatasi isian wajib, jumlah karakter, dan rentang nilai angka.

1. required & minlength / maxlength

  • required β†’ Memaksa kolom harus diisi (ditolak jika kosong).
  • minlength & maxlength β†’ Batas jumlah karakter min & max.
<!-- Kolom Wajib & Panjang Karakter --> <label>Nama Lengkap *</label> <input type="text" name="nama" required> <label>Password (8-20 Karakter) *</label> <input type="password" minlength="8" maxlength="20" required>

2. min / max & pattern

  • min & max β†’ Batas nilai angka minimal & maksimal.
  • pattern β†’ Validasi format regex (misal digit No HP).
<!-- Rentang Angka & Pattern RegEx --> <label>Umur Siswa (10 - 100)</label> <input type="number" min="10" max="100" required> <label>No HP (10 - 13 Digit Angka)</label> <input type="tel" pattern="[0-9]{10,13}" required>
MATERI 3B β€’ KONTROL STATE INPUT

βš™οΈ Atribut State Input: disabled vs readonly

Mengontrol keaktifan input dan perilaku pengiriman data ke server.

1. Atribut disabled (Non-Aktif)

  • disabled β†’ Menonaktifkan elemen input.
  • Pengguna tidak bisa mengklik/mengisi kolom.
  • ⚠️ Nilai input TIDAK DIKIRIM ke server saat submit form.
<!-- Input Disabled (Diabaikan Server) --> <label>Status Akun</label> <input type="text" value="Dikunci Admin" disabled>

2. Atribut readonly (Hanya-Baca)

  • readonly β†’ Kolom hanya bisa dibaca (dilihat).
  • Pengguna tidak bisa mengubah isinya.
  • βœ… Nilai input TETAP DIKIRIM ke server saat submit form.
<!-- Input Readonly (Tetap Terkirim) --> <label>Nomor Registrasi</label> <input type="text" name="id_reg" value="REG-2026-X8" readonly>
MATERI 3C β€’ SELEKSI DEFAULT

β˜‘οΈ Atribut Seleksi: checked & selected

Menentukan pilihan default yang aktif secara otomatis saat halaman web dibuka.

1. Atribut checked (Radio / Checkbox)

  • checked β†’ Tercentang otomatis sejak awal.
  • Digunakan pada <input type="checkbox"> & <input type="radio">.
<!-- Checkbox & Radio Checked Default --> <input type="checkbox" name="syarat" checked> Setuju Syarat <input type="radio" name="jk" value="L" checked> Pria

2. Atribut selected (Option Dropdown)

  • selected β†’ Opsi terpilih pada tag <select>.
  • Opsi bertanda selected langsung muncul di kotak dropdown.
<!-- Option Selected Default --> <select name="jurusan"> <option value="RPL" selected>RPL (Selected Default)</option> <option value="TKJ">TKJ</option> </select>
MATERI 3D β€’ TIPE INPUT VALIDASI

πŸ“± Tipe Input & Validasi Format Otomatis

Validasi bawaan browser yang dipicu oleh atribut type="" pada elemen input.

1. type="email" & type="url"

  • email β†’ Browser menguji format email (rifqi@gmail.com βœ… vs ❌ rifqi@gmail tanpa domain).
  • url β†’ Browser menguji awalan protokol (http:// / https://).
<!-- Input Email & URL --> <input type="email" name="email" required> <input type="url" name="web" placeholder="https://...">

2. type="number", "date", & "tel"

  • number β†’ Hanya menerima digit angka + keypad HP.
  • date β†’ Widget datepicker & format ISO valid.
  • tel β†’ Input nomor HP (dipadu pattern).
<!-- Input Number, Date, & Tel --> <input type="number" min="1" max="100"> <input type="date" name="tgl"> <input type="tel" pattern="[0-9]{10,13}">
MATERI 3E β€’ CONCEPT & HANDLING ERROR

🚨 Client-Side vs Server-Side & Handling Error

Memahami arsitektur validasi browser, keamanan backend server-side, dan pesan error browser.

1. Client-Side vs Server-Side

HTML5 Validation bekerja di sisi browser pengguna (Client-Side). Pengguna mendapat pesan kesalahan seketika sebelum data dikirim lewat jaringan.

⚠️ Catatan Security RPL: Validasi Client-Side (HTML5) dapat di-bypass pengguna via Inspect Element DevTools. Website profesional WAJIB memvalidasi ulang di Server-Side (Backend PHP/Laravel/Node.js).
// Contoh Server-Side Validation (PHP Backend) $request->validate([ 'email' => 'required|email' ]);

2. Skenario Error & Pesan Peringatan Browser

❌ Username Kosong (required) πŸ‘‰ Browser: "Please fill out this field." ❌ Email Tanpa Domain (type="email", rifqi@gmail) πŸ‘‰ Browser: "Please include a '.' after domain..." ❌ Password < 8 Karakter (minlength="8") πŸ‘‰ Browser: "Please lengthen this text to 8 chars..." ❌ No HP Berisi Huruf (pattern="[0-9]{10,13}") πŸ‘‰ Browser: "Please match the requested format."
MATERI 3F β€’ DEMO INTERAKTIF

πŸ§ͺ Live Demo Uji Validasi & State Input

Cobalah mengosongkan kolom, memilih status input, lalu klik tombol SUBMIT!

DEMO FRAME FORM VALIDASI & STATE CONTROL
MATERI 4 β€’ ELEMEN FORM PROFESIONAL

πŸ’Ό Elemen Form Tingkat Lanjut

Buat formulir sekelas aplikasi profesional dengan <optgroup>, autocomplete <datalist>, dan <fieldset>.

Tag Form Profesional

<!-- Select dengan Pengelompokan --> <select> <optgroup label="Teknik"> <option>RPL</option> <option>TKJ</option> </optgroup> </select> <!-- Autocomplete Datalist --> <input list="kota-list"> <datalist id="kota-list"> <option value="Bandung"> <option value="Jakarta"> </datalist> <!-- Fieldset & Legend --> <fieldset> <legend>Data Pribadi</legend> <textarea></textarea> </fieldset>
DEMO ELEMEN PROFESIONAL
MATERI 5 β€’ PROJECT FORM REGISTRASI

πŸ“ Project: Form Pendaftaran Siswa Baru

Menggabungkan 10 field esensial lengkap dengan HTML5 validation dalam 1 formulir profesional!

Checklist 10 Field Required

Nama Lengkap (text + required)
Email Aktif (email + required)
Nomor HP (tel + pattern angka)
Tanggal Lahir (date)
Jenis Kelamin (radio pria/wanita)
Jurusan Pilihan (select option)
Upload Pasfoto (file image)
Alamat Rumah (textarea)
Password & Konfirmasi (minlength=8)
PREVIEW LIVE FORM REGISTRASI SISWA
MATERI 7 β€’ MULTIMEDIA

🎡 Audio & πŸ“Ί Video HTML5

Menyajikan media suara dan gambar bergerak langsung di dalam website tanpa perlu plugin tambahan.

Tag <audio>

<audio controls autoplay loop> <source src="musik.mp3" type="audio/mpeg"> Browser tidak mendukung audio. </audio>

Tag <video>

<video controls width="100%" poster="sampul.jpg"> <source src="video.mp4" type="video/mp4"> </video>
MATERI 7 β€’ EMBEDDING

πŸͺŸ Iframe β€” Jendela Web & Peta Interaktif

<iframe> memungkinkan kita menyematkan peta Google/OpenStreetMap, video YouTube, atau widget lain ke website.

Atribut Kunci Iframe

  • src β†’ Alamat URL halaman/media yang disematkan.
  • width & height β†’ Dimensi ukuran jendela iframe.
  • loading="lazy" β†’ Memuat iframe hanya saat discroll.
  • sandbox β†’ Membatasi izin akses demi keamanan.
<iframe src="https://www.openstreetmap.org/..." width="100%" height="220" loading="lazy"> </iframe>
DEMO PETA EMBED INTERAKTIF
STRUKTUR WEB β€’ LANDING PAGE

🎯 Integrasi Form di Landing Page

Landing Page = halaman satu tujuan yang biasanya berisi penawaran produk + form pendaftaran cepat.

HEADER β€” Logo + Menu Navigasi
HERO β€” Judul Ajakan + Tombol CTA
FEATURES β€” Keunggulan Produk
FORM SECTION β€” Pendaftaran Cepat
FOOTER β€” Kontak & Hak Cipta
PREVIEW LANDING PAGE + FORM
STRUKTUR WEB β€’ COMPANY PROFILE

🏒 Company Profile & Form Kontak

Company Profile menjelaskan profil perusahaan, layanan, tim, dan menyediakan Form Kontak / Buku Tamu.

ABOUT β€” Profil & Sejarah Perusahaan
SERVICES β€” Layanan & Produk
PORTFOLIO β€” Galeri Hasil Karya
CONTACT FORM β€” Pesan & Lokasi Peta

Landing Page vs Company Profile

  • Landing Page: Fokus 1 aksi cepat (daftar/beli instan).
  • Company Profile: Menyajikan informasi lengkap jangka panjang.
  • Form di Landing β†’ Singkat (Email & Nama).
  • Form di Company Profile β†’ Form Kontak Lengkap (Alamat & Pesan).
MINI PROJECT SHOWCASE

🌟 Mini Project β€” Web Interaktif Ber-Form

Contoh hasil akhir gabungan HTML Form Lanjutan, Validasi, Multimedia, dan Styling CSS!

CONTOH PROJEK INTERAKTIF

Arsitektur Komponen

  • <header> β†’ Identitas nama & foto profil.
  • <section> Form Kontak β†’ `
    ` validasi bawaan.
  • <section> Media β†’ `
  • <footer> β†’ Hak cipta & link sosial media.
TUGAS 1

πŸ“‹ Buat Form Pendaftaran Online Ber-validasi

Instruksi Tugas

  • Buat 1 file HTML bernama pendaftaran.html.
  • Sediakan minimal 8 field isian yang berbeda.
  • Wajib menggunakan: required, email, tel (pattern), date, select, radio/checkbox, & textarea.
  • Tutup dengan tombol Kirim/Submit.

Kriteria Penilaian

  • Struktur HTML semantik & rapi (25%)
  • Kelengkapan 8 field + variasi tipe input (35%)
  • Penerapan HTML5 Form Validation (25%)
  • Setiap input memiliki label yang sesuai (15%)

Pengumpulan

File: pendaftaran.html
Validasi aktif di browser
Tenggat: 1 Minggu
TUGAS 2

🎯 Landing Page + Form & Multimedia

Instruksi Tugas

  • Buat file landing.html dengan tema bebas (Kafe, Game, Klub Sekolah).
  • Wajib memiliki 5 section semantik: Header, Hero, Fitur, Form Registrasi, Footer.
  • Sisipkan minimal 1 media (`