0Pricing
HTML Academy · บทเรียน

แอตทริบิวต์ novalidate

ปิดการตรวจสอบของเบราว์เซอร์เมื่อจัดการการตรวจสอบด้วยตนเอง

แอตทริบิวต์ novalidate เป็นบทเรียน HTML Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน HTML Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน

ข้อจำกัดของการตรวจสอบความถูกต้องโดยเบราว์เซอร์

การตรวจสอบความถูกต้องในตัวของ HTML5 มีข้อจำกัดดังนี้:

  • ข้อความข้อผิดพลาดขึ้นอยู่กับเบราว์เซอร์และปรับรูปแบบได้ยาก
  • การตรวจสอบจะทำงานเฉพาะเมื่อส่งแบบฟอร์ม ไม่ทำงานเมื่อออกจากช่องหรือเมื่อป้อนข้อมูล
  • ไม่สามารถตรวจสอบกฎทางธุรกิจที่ซับซ้อนได้ เช่น รหัสผ่านตรงกันหรือ username ไม่ซ้ำ

เมื่อต้องการควบคุมทุกอย่าง ให้ปิดการตรวจสอบในตัวด้วย novalidate

novalidate บน form

การเพิ่ม novalidate ลงในแบบฟอร์มจะปิดการตรวจสอบทั้งหมดของเบราว์เซอร์:

<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>

เหตุผลที่ใช้ novalidate

เหตุผลทั่วไปในการปิดการตรวจสอบของเบราว์เซอร์:

  • กำหนดรูปแบบข้อความข้อผิดพลาดเองให้สอดคล้องกับระบบการออกแบบ
  • ตรวจสอบแบบเรียลไทม์ เมื่อออกจากช่องหรือเมื่อป้อนข้อมูล ไม่ใช่เฉพาะตอนส่งแบบฟอร์ม
  • ตรวจสอบหลายช่อง เช่น การยืนยันรหัสผ่าน
  • แสดงข้อผิดพลาดจากเซิร์ฟเวอร์หลังการเปลี่ยนเส้นทาง
  • ใช้ไลบรารีตรวจสอบความถูกต้องจากบุคคลที่สาม เช่น Zod, Yup และ React Hook Form

รูปแบบการตรวจสอบความถูกต้องแบบกำหนดเอง

สร้างการตรวจสอบความถูกต้องแบบกำหนดเองด้วย 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 บนปุ่ม

ปิดการตรวจสอบสำหรับปุ่มส่งแบบฟอร์มเฉพาะปุ่ม โดยไม่ต้องใส่ novalidate ในแบบฟอร์มทั้งหมด:

<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>

การกำหนดรูปแบบข้อผิดพลาดเอง

การกำหนดรูปแบบข้อผิดพลาดจากการตรวจสอบแบบกำหนดเอง:

.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;
}

ข้อผิดพลาดแบบกำหนดเองที่เข้าถึงได้

ทำให้ข้อความข้อผิดพลาดแบบกำหนดเองเข้าถึงได้:

<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 -->

กลยุทธ์กำหนดเวลาตรวจสอบความถูกต้อง

เวลาที่ควรตรวจสอบด้วย novalidate:

  • เมื่อส่งแบบฟอร์ม — ง่ายที่สุด ตรวจสอบทุกอย่างพร้อมกัน
  • เมื่อออกจากช่อง — ตรวจสอบแต่ละช่องเมื่อผู้ใช้เลื่อนออกจากช่องนั้น
  • เมื่อป้อนข้อมูล — แบบเรียลไทม์ ให้ประสบการณ์ผู้ใช้ดีที่สุด แต่อาจรู้สึกเร่งรัดเกินไป
  • แบบผสม — ตรวจสอบเมื่อออกจากช่อง และล้างข้อผิดพลาดเมื่อป้อนข้อมูล

รูปแบบผสมระหว่างการออกจากช่องและการป้อนข้อมูล

แนวทางตรวจสอบความถูกต้องที่เป็นมิตรต่อผู้ใช้ที่สุด:

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 และการตรวจสอบฝั่งเซิร์ฟเวอร์

ตรวจสอบความถูกต้องที่ฝั่งเซิร์ฟเวอร์เสมอด้วย:

  • การตรวจสอบฝั่งไคลเอนต์มีไว้เพื่อประสบการณ์ผู้ใช้
  • การตรวจสอบฝั่งเซิร์ฟเวอร์มีไว้เพื่อความปลอดภัย
  • ผู้ใช้สามารถหลีกเลี่ยงการตรวจสอบของ HTML ได้ด้วยการแก้ไขคำขอ
  • การตรวจสอบแบบกำหนดเองด้วย novalidate และ JS ควรมีกฎสอดคล้องกับเซิร์ฟเวอร์

ไลบรารีตรวจสอบความถูกต้อง

ไลบรารีตรวจสอบความถูกต้องยอดนิยมของ JavaScript ที่ใช้คู่กับ novalidate:

  • Zod — การตรวจสอบสคีมาที่ออกแบบมาเพื่อ TypeScript เป็นหลัก
  • Yup — การตรวจสอบสคีมาของออบเจ็กต์
  • Valibot — ไลบรารีสคีมาขนาดเล็ก
  • React Hook Form — การจัดการสถานะแบบฟอร์มและการตรวจสอบสำหรับ React

การทดสอบการตรวจสอบความถูกต้องแบบกำหนดเอง

วิธีทดสอบการตรวจสอบความถูกต้องของแบบฟอร์มแบบกำหนดเอง:

  • ทดสอบการส่งแบบฟอร์มที่ว่างเปล่า (ช่องที่จำเป็นต้องกรอก)
  • ทดสอบรูปแบบที่ไม่ถูกต้อง (อีเมลผิดรูปแบบ รูปแบบหมายเลขโทรศัพท์ไม่ถูกต้อง)
  • ทดสอบกรณีขอบ (มีแต่ช่องว่าง อักขระ Unicode และข้อความที่ยาวมาก)
  • ทดสอบด้วยโปรแกรมอ่านหน้าจอเพื่อยืนยันว่ามีการประกาศข้อผิดพลาด
  • ทดสอบการนำทางด้วยแป้นพิมพ์ระหว่างช่องหลังแสดงข้อผิดพลาด

ตรวจสอบความเข้าใจ

formnovalidate บนปุ่มทำหน้าที่อะไร

สรุป: novalidate

สาระสำคัญของ novalidate:

  • novalidate บนแบบฟอร์ม — ปิดการตรวจสอบทั้งหมดของเบราว์เซอร์
  • formnovalidate บนปุ่ม — ปิดการตรวจสอบเฉพาะการส่งแบบฟอร์มนั้น
  • ใช้การตรวจสอบแบบกำหนดเองเพื่อควบคุมประสบการณ์ผู้ใช้และรองรับกฎที่ซับซ้อน
  • ตรวจสอบที่ฝั่งเซิร์ฟเวอร์เสมอ เพราะการตรวจสอบฝั่งไคลเอนต์สามารถถูกหลีกเลี่ยงได้
  • ประกาศข้อผิดพลาดให้เข้าถึงได้ด้วย role="alert" และ aria-invalid

คำถามที่พบบ่อย

บทเรียน “แอตทริบิวต์ novalidate” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “แอตทริบิวต์ novalidate” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส HTML Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “แอตทริบิวต์ novalidate”

ปิดการตรวจสอบของเบราว์เซอร์เมื่อจัดการการตรวจสอบด้วยตนเอง คุณปฏิบัติ HTML Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน HTML Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน HTML Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “แอตทริบิวต์ novalidate” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน HTML Academy นี้ได้ไหม

ได้ บทเรียน HTML Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. required pattern min max และ maxlength
  2. แอตทริบิวต์ novalidate
  3. พื้นฐาน Constraint Validation API
  4. ข้อแลกเปลี่ยนระหว่างการตรวจสอบด้วย HTML5 และ JavaScript
← กลับไปที่ HTML Academy