0Pricing
HTML Academy · درس

أساسيات 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); // 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);
  });
});

خاصية 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 وmaxlength
  • rangeUnderflow / rangeOverflow — قيمتا min وmax
  • stepMismatch — القيمة لا تطابق خطوة صالحة
  • 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» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. required وpattern وmin وmax وmaxlength
  2. السمة novalidate
  3. أساسيات Constraint Validation API
  4. مفاضلات التحقق باستخدام HTML5 وJavaScript
← العودة إلى HTML Academy