พื้นฐาน 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); // truesetCustomValidity
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— ไม่ตรงตามรูปแบบ regextooShort/tooLong— ความยาวน้อยกว่าหรือมากกว่า minlength/maxlengthrangeUnderflow/rangeOverflow— ค่าต่ำกว่าหรือสูงกว่า min/maxstepMismatch— ไม่ใช่ค่าที่ถูกต้องตาม stepcustomError— มีการกำหนดข้อความด้วย setCustomValiditybadInput— เบราว์เซอร์ไม่สามารถแยกวิเคราะห์ค่าได้
ตรวจสอบความเข้าใจ
จะทำให้หน้าต่างป๊อปอัปข้อผิดพลาดการตรวจสอบดั้งเดิมของเบราว์เซอร์แสดงขึ้นด้วยโปรแกรมได้อย่างไร
สรุป: 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- required pattern min max และ maxlength
- แอตทริบิวต์ novalidate
- พื้นฐาน Constraint Validation API
- ข้อแลกเปลี่ยนระหว่างการตรวจสอบด้วย HTML5 และ JavaScript