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— التحقق باستخدام regexmin/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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- required وpattern وmin وmax وmaxlength
- السمة novalidate
- أساسيات Constraint Validation API
- مفاضلات التحقق باستخدام HTML5 وJavaScript