أساسيات Constraint Validation API
قراءة حالة الصلاحية والرسائل المخصصة باستخدام Constraint Validation API
أساسيات Constraint Validation API درس مجاني في HTML Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في HTML Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة HTML Academy 4 دروس في المجموع.
ما واجهة برمجة تطبيقات التحقق من القيود؟
إن 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);
});
});خاصية willValidate
تكون 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— لم يطابق التعبير النمطي للنمط المحددtooShort/tooLong— قيما minlength وmaxlengthrangeUnderflow/rangeOverflow— قيمتا min وmaxstepMismatch— القيمة لا تطابق خطوة صالحةcustomError— تم تعيين رسالة عبر setCustomValiditybadInput— تعذّر على المتصفح تحليل القيمة
تحقق سريع
كيف تعرضون برمجيًا نافذة خطأ التحقق الأصلية في المتصفح؟
مراجعة: Constraint Validation API
أساسيات Constraint Validation API:
input.validity— كائن ValidityState الذي يتضمن علامات محددةcheckValidity()— يعيد true أو false، ويطلق حدث invalidreportValidity()— يتحقق ويعرض واجهة الخطأ الأصليةvalidationMessage— سلسلة الخطأ التي يعرضها المتصفحsetCustomValidity(msg)— يعيّن خطأ مخصصًا؛ استخدموا سلسلة فارغة لمسحه
الأسئلة الشائعة
هل درس «أساسيات Constraint Validation API» مجاني؟
نعم — نص درس «أساسيات Constraint Validation API» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة HTML Academy، انتقل إلى CoddyKit PRO. تتضمن دورة HTML Academy 4 دروس في المجموع.
ماذا ستتعلم في «أساسيات Constraint Validation API»؟
قراءة حالة الصلاحية والرسائل المخصصة باستخدام Constraint Validation API تتمرن على HTML Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ HTML Academy؟
لا تُشترط خبرة سابقة. HTML Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «أساسيات Constraint Validation API»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس HTML Academy هذا؟
نعم. كل درس في HTML Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- required وpattern وmin وmax وmaxlength
- السمة novalidate
- أساسيات Constraint Validation API
- مفاضلات التحقق باستخدام HTML5 وJavaScript