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

พื้นฐาน Constraint Validation API

อ่านสถานะความถูกต้องและข้อความกำหนดเองด้วย Constraint Validation API

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

Constraint Validation API คืออะไร

Constraint Validation API คือส่วนติดต่อของ JavaScript สำหรับอ่านและกำหนดสถานะการตรวจสอบความถูกต้องของแบบฟอร์ม:

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

พร็อพเพอร์ตี validity

ตัวควบคุมแบบฟอร์มทุกตัวมีออบเจ็กต์ validity ซึ่งประกอบด้วยแฟล็กค่าบูลีนเฉพาะรายการ:

const input = document.getElementById('email');
const v = input.validity;

console.log(v.valid);         // true if all constraints pass
console.log(v.valueMissing);  // true if required but empty
console.log(v.typeMismatch);  // true if type doesn't match (e.g. bad email)
console.log(v.patternMismatch); // true if pattern fails
console.log(v.tooShort);      // true if shorter than minlength
console.log(v.tooLong);       // true if longer than maxlength
console.log(v.rangeUnderflow); // true if less than min
console.log(v.rangeOverflow);  // true if more than max

เมธอด checkValidity

checkValidity() ส่งคืนค่า true/false และทำให้เหตุการณ์ invalid ทำงาน:

const form = document.getElementById('my-form');

// Check entire form:
if (!form.checkValidity()) {
  console.log('Form has errors');
}

// Check individual field:
const email = document.getElementById('email');
if (!email.checkValidity()) {
  console.log('Email is invalid');
}
// The 'invalid' event fires on invalid fields

เมธอด reportValidity

reportValidity() แสดงส่วนติดต่อการตรวจสอบดั้งเดิมของเบราว์เซอร์:

const input = document.getElementById('username');

// Shows native browser error tooltip if invalid:
const valid = input.reportValidity();
console.log(valid);  // true or false

// On a form: validates all fields and shows first error:
document.getElementById('form').reportValidity();

พร็อพเพอร์ตี validationMessage

validationMessage ส่งคืนสตริงข้อความข้อผิดพลาดของเบราว์เซอร์:

const email = document.querySelector('input[type=email]');
email.value = 'not-an-email';

console.log(email.validationMessage);
// e.g. "Please include an '@' in the email address..."

console.log(email.validity.typeMismatch); // true

setCustomValidity

setCustomValidity(message) กำหนดข้อผิดพลาดจากการตรวจสอบแบบกำหนดเอง:

const username = document.getElementById('username');

// Check availability on blur:
username.addEventListener('blur', async () => {
  const res = await fetch(`/check-username?name=${username.value}`);
  const { taken } = await res.json();

  if (taken) {
    username.setCustomValidity('This username is already taken.');
  } else {
    username.setCustomValidity('');  // empty string = clear the error
  }
});

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

ต้องล้างสถานะความถูกต้องแบบกำหนดเองเมื่อผู้ใช้แก้ไขปัญหาแล้ว:

const input = document.getElementById('username');

input.addEventListener('input', () => {
  // Clear custom error when user starts typing again:
  input.setCustomValidity('');
});

input.addEventListener('blur', async () => {
  // Re-validate on blur:
  const taken = await checkUsername(input.value);
  input.setCustomValidity(taken ? 'Username taken' : '');
});

เหตุการณ์ invalid

เหตุการณ์ invalid จะทำงานกับตัวควบคุมแบบฟอร์มที่ไม่ผ่านการตรวจสอบ:

document.querySelectorAll('input').forEach(input => {
  input.addEventListener('invalid', (e) => {
    e.preventDefault();  // prevent default browser tooltip
    // Show your custom error UI instead:
    showError(input, input.validationMessage);
  });
});

พร็อพเพอร์ตี will-validate

willValidate มีค่าเป็น true หากองค์ประกอบนั้นเข้าร่วมการตรวจสอบข้อจำกัด:

document.querySelectorAll(':input').forEach(el => {
  if (el.willValidate) {
    console.log(el.name, 'will be validated');
  }
});
// Disabled, hidden, or output elements return willValidate = false

การใช้ Validity ในการตรวจสอบแบบกำหนดเอง

ตัวอย่างการตรวจสอบแบบกำหนดเองฉบับสมบูรณ์:

<form id="signup" novalidate>
  <input type="email" id="email" name="email" required>
  <span id="email-err" role="alert"></span>
  <button type="submit">Sign Up</button>
</form>

<script>
const form = document.getElementById('signup');
const email = document.getElementById('email');
const err = document.getElementById('email-err');

form.addEventListener('submit', (e) => {
  e.preventDefault();
  err.textContent = '';

  if (email.validity.valueMissing) {
    err.textContent = 'Email is required.';
    email.focus();
    return;
  }
  if (email.validity.typeMismatch) {
    err.textContent = 'Enter a valid email address.';
    email.focus();
    return;
  }
  // Submit...
});
</script>

สรุปแฟล็กของ ValidityState

แฟล็กทั้งหมดของ ValidityState:

  • valueMissing — จำเป็นต้องกรอกแต่ยังว่างอยู่
  • typeMismatch — รูปแบบชนิดข้อมูลไม่ถูกต้อง
  • patternMismatch — ไม่ตรงตามรูปแบบ regex
  • tooShort / tooLong — ความยาวน้อยกว่าหรือมากกว่า minlength/maxlength
  • rangeUnderflow / rangeOverflow — ค่าต่ำกว่าหรือสูงกว่า min/max
  • stepMismatch — ไม่ใช่ค่าที่ถูกต้องตาม step
  • customError — มีการกำหนดข้อความด้วย setCustomValidity
  • badInput — เบราว์เซอร์ไม่สามารถแยกวิเคราะห์ค่าได้

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

จะทำให้หน้าต่างป๊อปอัปข้อผิดพลาดการตรวจสอบดั้งเดิมของเบราว์เซอร์แสดงขึ้นด้วยโปรแกรมได้อย่างไร

สรุป: Constraint Validation API

สาระสำคัญของ Constraint Validation API:

  • input.validity — ออบเจ็กต์ ValidityState ที่มีแฟล็กเฉพาะรายการ
  • checkValidity() — ส่งคืนค่า true/false และทำให้เหตุการณ์ invalid ทำงาน
  • reportValidity() — ตรวจสอบและแสดงส่วนติดต่อข้อผิดพลาดดั้งเดิม
  • validationMessage — สตริงข้อผิดพลาดของเบราว์เซอร์
  • setCustomValidity(msg) — กำหนดข้อผิดพลาดเอง ใช้สตริงว่างเพื่อล้างข้อผิดพลาด

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

บทเรียน “พื้นฐาน Constraint Validation API” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน Constraint Validation API”

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

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

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

บทเรียน “พื้นฐาน Constraint Validation API” ใช้เวลานานแค่ไหน

บทเรียน 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