0Pricing
HTML Academy · Pelajaran

Atribut novalidate

Nonaktifkan validasi peramban saat Anda menanganinya sendiri.

Atribut novalidate adalah pelajaran HTML Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar HTML Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus HTML Academy mencakup 4 pelajaran total.

Keterbatasan Validasi Peramban

Validasi bawaan HTML5 memiliki keterbatasan:

  • Pesan kesalahan bergantung pada peramban dan sulit ditata
  • Validasi hanya berjalan saat pengiriman, bukan saat blur atau input
  • Aturan bisnis yang kompleks (pencocokan kata sandi, username unik) tidak dapat diterapkan

Saat membutuhkan kendali penuh, nonaktifkan validasi bawaan dengan novalidate.

novalidate pada formulir

Menambahkan novalidate ke formulir akan menonaktifkan semua validasi peramban:

<form action="/register" method="post" novalidate>
  <!-- Browser will NOT validate these on submit -->
  <input type="email" name="email" required>
  <input type="password" name="password" minlength="8" required>
  <button type="submit">Register</button>
</form>

Mengapa Menggunakan novalidate?

Alasan umum untuk menonaktifkan validasi peramban:

  • Penataan gaya pesan kesalahan kustom yang sesuai dengan sistem desain Anda
  • Validasi waktu nyata (saat blur atau input, bukan hanya saat pengiriman)
  • Validasi beberapa bidang (misalnya konfirmasi kata sandi)
  • Menampilkan kesalahan dari sisi server setelah pengalihan
  • Pustaka validasi pihak ketiga (Zod, Yup, React Hook Form)

Pola Validasi Kustom

Bangun validasi kustom dengan novalidate:

<form id="form" novalidate>
  <label for="email">Email</label>
  <input type="email" id="email" name="email" required>
  <span class="error" id="email-error" role="alert" hidden></span>

  <button type="submit">Submit</button>
</form>

<script>
document.getElementById('form').addEventListener('submit', (e) => {
  e.preventDefault();
  const email = document.getElementById('email');
  const error = document.getElementById('email-error');

  if (!email.value || !email.value.includes('@')) {
    error.textContent = 'Please enter a valid email address.';
    error.hidden = false;
    email.focus();
  } else {
    error.hidden = true;
    // Submit...
  }
});
</script>

formnovalidate pada Tombol

Nonaktifkan validasi untuk tombol pengiriman tertentu tanpa menggunakan novalidate pada seluruh formulir:

<form action="/save" method="post">
  <input type="email" name="email" required>

  <!-- Save as draft: skip validation -->
  <button type="submit" formaction="/save-draft" formnovalidate>
    Save Draft
  </button>

  <!-- Final submit: normal validation -->
  <button type="submit">Submit</button>
</form>

Menata Gaya Kesalahan Kustom

Penataan gaya kesalahan validasi kustom:

.field-error {
  color: #ef4444;
  font-size: 0.875rem;
  margin-top: 0.25rem;
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

input.invalid {
  border-color: #ef4444;
  box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15);
}

input.valid {
  border-color: #22c55e;
}

Kesalahan Kustom yang Aksesibel

Buat pesan kesalahan kustom agar dapat diakses:

<label for="email">Email</label>
<input
  type="email"
  id="email"
  name="email"
  aria-describedby="email-error"
  aria-invalid="false"
>
<span id="email-error" role="alert"></span>
<!-- aria-invalid="true" when invalid -->
<!-- role="alert" announces changes to screen readers -->
<!-- aria-describedby links the input to its error message -->

Strategi Waktu Validasi

Kapan harus melakukan validasi dengan novalidate:

  • Saat pengiriman — paling sederhana; validasikan semuanya sekaligus
  • Saat blur — validasikan setiap bidang ketika pengguna meninggalkannya
  • Saat input — waktu nyata; UX terbaik, tetapi bisa terasa terlalu agresif
  • Hibrida — validasikan saat blur; hapus kesalahan saat input

Pola Hibrida Blur + Input

Pendekatan validasi yang paling ramah pengguna:

function validateEmail(input, errorEl) {
  const val = input.value.trim();
  if (!val) {
    showError(input, errorEl, 'Email is required.');
  } else if (!/^[^@]+@[^@]+\.[^@]+$/.test(val)) {
    showError(input, errorEl, 'Enter a valid email address.');
  } else {
    clearError(input, errorEl);
  }
}

input.addEventListener('blur', () => validateEmail(input, errorEl));
input.addEventListener('input', () => {
  // Only clear the error while typing, don't re-validate until blur
  if (input.classList.contains('invalid')) validateEmail(input, errorEl);
});

novalidate dan Validasi Sisi Server

Selalu lakukan validasi dari sisi server juga:

  • Validasi sisi klien ditujukan untuk pengalaman pengguna
  • Validasi sisi server ditujukan untuk keamanan
  • Pengguna dapat melewati validasi HTML dengan mengubah permintaan
  • Validasi kustom dengan novalidate + JS harus mencerminkan aturan server

Pustaka Validasi

Pustaka validasi JavaScript populer yang dapat dipasangkan dengan novalidate:

  • Zod — validasi skema yang mengutamakan TypeScript
  • Yup — validasi skema objek
  • Valibot — pustaka skema yang ringan
  • React Hook Form — status formulir + validasi untuk React

Menguji Validasi Kustom

Cara menguji validasi formulir kustom:

  • Uji pengiriman kosong (bidang wajib)
  • Uji format yang tidak valid (email yang salah, pola nomor telepon)
  • Uji kasus tepi (hanya spasi, Unicode, teks yang sangat panjang)
  • Uji dengan pembaca layar untuk memverifikasi pengumuman kesalahan
  • Uji navigasi papan ketik antarb idang setelah kesalahan ditampilkan

Pemeriksaan Cepat

Apa yang dilakukan formnovalidate pada tombol?

Ringkasan: novalidate

Hal-hal penting tentang novalidate:

  • novalidate pada formulir — menonaktifkan semua validasi peramban
  • formnovalidate pada tombol — menonaktifkan validasi hanya untuk pengiriman tersebut
  • Gunakan validasi kustom untuk mengendalikan UX dan menerapkan aturan yang kompleks
  • Selalu lakukan validasi dari sisi server — validasi klien dapat dilewati
  • Umumkan kesalahan secara aksesibel dengan role="alert" dan aria-invalid

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Atribut novalidate” gratis?

Ya — teks lengkap “Atribut novalidate” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus HTML Academy, upgrade ke CoddyKit PRO. Kursus HTML Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Atribut novalidate”?

Nonaktifkan validasi peramban saat Anda menanganinya sendiri. Kamu berlatih HTML Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai HTML Academy?

Tidak diperlukan pengalaman sebelumnya. HTML Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Atribut novalidate” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran HTML Academy ini?

Ya. Setiap pelajaran HTML Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. required pattern min max dan maxlength
  2. Atribut novalidate
  3. Dasar-Dasar Constraint Validation API
  4. Perbandingan Validasi HTML5 dan JavaScript
← Kembali ke HTML Academy