Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> HTML

วิธีระบุให้ฟอร์มไม่ตรวจสอบความถูกต้อง (No Validate) ใน HTML

ใช้แอตทริบิวต์ novalidate ในแท็ก <form> เพื่อระบุว่าฟอร์มไม่ควรตรวจสอบความถูกต้อง (Validation) เมื่อส่งฟอร์ม แม้จะมีแอตทริบิวต์ required, pattern, type="email" ฯลฯ

ตัวอย่าง

ลองรันโค้ดต่อไปนี้เพื่อใช้งานแอตทริบิวต์ novalidate:

<!DOCTYPE html>
<html>
  <head>
    <title>HTML novalidate attribute</title>
  </head>
  <body>
    <form action="" method="get" novalidate>
      Student Name<br><input type="text" name="sname" required><br>
      Rank<br><input type="number" name="rank" required><br>
      <input type="submit" value="Submit">
    </form>
  </body>
</html>

กรณีที่ควรใช้ novalidate

  • Save Draft: บันทึกร่างก่อนกรอกครบ
  • Multi-step Form: ขั้นตอนกลาง ไม่ต้อง validate ทุกฟิลด์
  • Custom Validation: จัดการ Validation เองด้วย JavaScript
  • Testing: ทดสอบ Server-side validation

ตัวอย่าง: ปุ่ม Save Draft vs Submit

<form id="myForm" action="/submit" method="post">
  <input type="text" name="title" required placeholder="Title">
  <textarea name="content" required placeholder="Content"></textarea>
  
  <button type="submit" name="action" value="draft" formnovalidate>
    Save Draft
  </button>
  <button type="submit" name="action" value="publish">
    Publish
  </button>
</form>

แอตทริบิวต์ formnovalidate ในปุ่ม Submit - ข้าม validation เฉพาะปุ่มนั้น (HTML5)

การปิด Validation เฉพาะฟิลด์

<input type="email" name="email" required> <!-- validate -->
<input type="text" name="nickname"> <-- ไม่ required -->
<input type="text" name="code" required formnovalidate> <-- ข้าม validation -->

JavaScript: ตรวจสอบและควบคุม Validation

const form = document.getElementById('myForm');

// ตรวจสอบความถูกต้องด้วยตนเอง
if (!form.checkValidity()) {
  form.reportValidity(); // แสดง UI validation
  return;
}

// ปิด validation ชั่วคราว
form.noValidate = true;
form.submit();
form.noValidate = false;

หมายเหตุ: novalidate ปิด Client-side validation** เท่านั้น Server-side validation ยังคงจำเป็นต้องมีเสมอ เพื่อความปลอดภัย