0Pricing
HTML Academy · درس

required وpattern وmin وmax وmaxlength

إضافة قيود تحقق مضمّنة إلى مدخلات النماذج

required وpattern وmin وmax وmaxlength درس مجاني في HTML Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في HTML Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة HTML Academy 4 دروس في المجموع.

التحقق من صحة النماذج في HTML5

أضاف HTML5 تحققًا مضمّنًا من صحة النماذج — دون الحاجة إلى JavaScript:

  • يتحقق المتصفح من القيود قبل الإرسال
  • تظهر رسائل الخطأ الأصلية تلقائيًا
  • يعمل مع أصناف CSS الزائفة :valid / :invalid

required

تمنع السمة required الإرسال إذا كان الحقل فارغًا:

<label for="email">Email (required)</label>
<input type="email" id="email" name="email" required>
<!-- Empty on submit → browser shows "Please fill in this field" -->
<!-- Also: field is :invalid until filled -->

pattern

تتحقق السمة pattern من النص بمقارنته بتعبير نمطي:

<label for="username">Username (letters and numbers only)</label>
<input
  type="text"
  id="username"
  name="username"
  pattern="[a-zA-Z0-9]{3,20}"
  title="3-20 letters and numbers"
>
<!-- pattern anchored at both ends automatically -->
<!-- title provides the error message hint -->

أمثلة شائعة على pattern

أنماط regex مفيدة لحقول النماذج:

<!-- Phone: digits, spaces, hyphens -->
<input type="tel" pattern="[0-9 ()+-]{7,20}">

<!-- Postal code: US zip code -->
<input type="text" pattern="[0-9]{5}(-[0-9]{4})?">

<!-- Password: min 8 chars, one uppercase, one digit -->
<input type="password" pattern="(?=.*[A-Z])(?=.*[0-9]).{8,}">

<!-- Twitter handle: -->
<input type="text" pattern="@?[A-Za-z0-9_]{1,15}">

min وmax

قيّد حقول الأرقام والتواريخ والنطاقات:

<!-- Number range -->
<input type="number" name="qty" min="1" max="100">

<!-- Date range -->
<input type="date" name="checkin" min="2025-01-01" max="2025-12-31">

<!-- Range slider -->
<input type="range" name="volume" min="0" max="100" step="5">

<!-- Time -->
<input type="time" name="meeting" min="09:00" max="17:00">

maxlength وminlength

تحكم في طول إدخال النص:

<input type="text" name="username" minlength="3" maxlength="20">
<!-- minlength: minimum number of characters required -->
<!-- maxlength: maximum characters allowed (browser enforces hard stop) -->

<textarea name="bio" minlength="50" maxlength="500"></textarea>
<!-- Same attributes work on textarea -->

step

تحدد السمة step الزيادات المسموح بها لحقول الأرقام والنطاقات:

<input type="number" name="price" min="0" step="0.01">
<!-- Accepts decimal prices: 0.00, 0.01, 4.99, etc. -->

<input type="number" name="qty" min="0" step="5">
<!-- Only multiples of 5: 0, 5, 10, 15... -->

<input type="range" min="0" max="100" step="10">
<!-- Snaps to: 0, 10, 20, ..., 100 -->

‎CSS :valid و:invalid

نسّق الحقول بناءً على حالة التحقق منها:

input:valid {
  border-color: #22c55e;   /* green when valid */
}

input:invalid {
  border-color: #ef4444;   /* red when invalid */
}

/* Avoid showing :invalid on page load (before user interaction): */
input:not(:placeholder-shown):invalid {
  border-color: #ef4444;
}
/* Only show invalid style after user has typed something */

استخدام title لرسائل الخطأ المخصّصة

توفر السمة title تلميحًا في رسالة خطأ التحقق التي يعرضها المتصفح:

<input
  type="text"
  pattern="[A-Za-z]{2,3}"
  title="Enter a 2 or 3 letter country code (e.g. US, GB, DEU)"
  name="country-code"
>
<!-- Browser shows the title text alongside the default error message -->

دمج القيود

تعمل سمات التحقق المتعددة معًا:

<input
  type="text"
  name="username"
  required
  minlength="3"
  maxlength="20"
  pattern="[a-z][a-z0-9_]*"
  title="Lowercase letters, numbers, underscores. Must start with a letter."
>
<!-- All constraints must pass for the field to be :valid -->

novalidate وتوقيت التحقق

يحدث التحقق عند الإرسال افتراضيًا. للتحقق عند كل حدث إدخال:

<input type="email" id="email">

<script>
const input = document.getElementById('email');
input.addEventListener('blur', () => {
  // Check validity on blur (when user leaves field):
  if (!input.validity.valid) {
    input.reportValidity();
  }
});
</script>

ملخص الأصناف الزائفة للتحقق

أصناف CSS الزائفة للتحقق من صحة النماذج:

  • :valid — اجتاز التحقق من القيود
  • :invalid — فشل قيد واحد أو أكثر
  • :required — يحتوي على السمة required
  • :optional — لا يحتوي على required
  • :in-range — القيمة ضمن min/max
  • :out-of-range — القيمة خارج min/max

اختبار سريع

ما السمة التي تحدد الحد الأقصى لعدد الأحرف في إدخال نصي؟

مراجعة: سمات التحقق

أساسيات التحقق في HTML5:

  • required — يجب ملء الحقل
  • pattern — التحقق باستخدام regex
  • min / max — حدود القيمة لحقول الأرقام والتواريخ والنطاقات
  • maxlength / minlength — حدود عدد الأحرف
  • step — الزيادات المسموح بها
  • استخدم CSS ‏:valid / :invalid للتنسيق

الأسئلة الشائعة

هل درس «required وpattern وmin وmax وmaxlength» مجاني؟

نعم — نص درس «required وpattern وmin وmax وmaxlength» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة HTML Academy، انتقل إلى CoddyKit PRO. تتضمن دورة HTML Academy 4 دروس في المجموع.

ماذا ستتعلم في «required وpattern وmin وmax وmaxlength»؟

إضافة قيود تحقق مضمّنة إلى مدخلات النماذج تتمرن على HTML Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ HTML Academy؟

لا تُشترط خبرة سابقة. HTML Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «required وpattern وmin وmax وmaxlength»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس HTML Academy هذا؟

نعم. كل درس في HTML Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

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

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