شرح النماذج في HTML بالعربي — بناء form وinput بالتفصيل

كيف يُسجّل المستخدم في موقعك؟ كيف يبحث؟ كيف يُرسل رسالة؟ الإجابة في كلمة واحدة: النماذج (Forms). النماذج هي بوابة التفاعل بين المستخدم والموقع — وكل ما يتعلمه هنا ستجده يومياً في عملك.

وسم النموذج <form>

<form> هو الحاوية الرئيسية لكل عناصر الإدخال. لكي يعمل النموذج بشكل صحيح، يحتاج خاصيتين:

  • action — العنوان الذي ستُرسَل إليه البيانات عند الضغط على "إرسال". مثلاً مسار ملف PHP يعالج البيانات من جانب الخادم.
  • method — طريقة إرسال البيانات: إما GET (البيانات في URL) أو POST (البيانات في جسم الطلب — أكثر أماناً للبيانات الحساسة).
<!-- نموذج بسيط -->
<form action="/process.php" method="POST">
    <!-- عناصر الإدخال تذهب هنا -->
</form>
ملاحظة: النموذج في HTML يتحكم فقط في العرض (ما يراه المستخدم). معالجة البيانات وحفظها في قاعدة بيانات — هذا عمل لغات الخادم مثل PHP أو Node.js. ستتعلمها في الدروس القادمة.

عنصر الإدخال <input> — الأهم في النماذج

<input> هو العنصر الأكثر استخداماً في النماذج. يتغير شكله ووظيفته كلياً بناءً على قيمة خاصية type.

أنواع <input> الأساسية

النوع (type) الوصف مثال الكود
text حقل نصي لسطر واحد <input type="text">
password حقل يُخفي الأحرف بنقاط <input type="password">
email حقل بريد إلكتروني (يُتحقق من الصيغة) <input type="email">
number حقل للأرقام فقط مع أسهم للزيادة والنقصان <input type="number">
checkbox مربع اختيار — يمكن اختيار أكثر من واحد <input type="checkbox">
radio زر اختيار — خيار واحد فقط من مجموعة <input type="radio">
file رفع ملف <input type="file">
date اختيار تاريخ من تقويم <input type="date">
range شريط تمرير بين قيمتين <input type="range" min="0" max="100">
submit زر لإرسال النموذج <input type="submit" value="إرسال">
reset زر لمسح جميع الحقول وإعادة تعيينها <input type="reset" value="مسح">
hidden حقل مخفي — لإرسال بيانات بدون إظهارها <input type="hidden" value="123">

وسم <label> — الصديق الضروري للـ input

<label> يُعرّف نصاً توضيحياً لحقل الإدخال. يربطه بالحقل عبر خاصية for التي تطابق id الحقل.

<!-- طريقة الربط عبر for/id -->
<label for="username">اسم المستخدم:</label>
<input type="text" id="username" name="username">

<!-- طريقة التضمين -- input داخل label مباشرة -->
<label>
    كلمة المرور:
    <input type="password" name="password">
</label>

لماذا label مهم؟

  • الضغط على نص التسمية يُنشّط الحقل تلقائياً (UX أفضل)
  • أدوات قراءة الشاشة تقرأ التسمية للمكفوفين (إمكانية الوصول)
  • يُحسّن نتائج SEO للصفحات التي تحتوي نماذج

خصائص <input> المهمة

<input
    type="text"
    id="fullname"
    name="fullname"
    placeholder="أدخل اسمك الكامل"
    value=""
    required
    maxlength="50"
    minlength="3"
    disabled
>
الخاصية وظيفتها
name اسم الحقل الذي يُرسَل مع البيانات — ضروري لمعالجة النموذج
id معرف فريد للربط مع <label> وJavaScript
placeholder نص تلميحي يختفي عند الكتابة
value القيمة الافتراضية للحقل
required يجعل الحقل إجبارياً — لا يُرسل النموذج بدون ملئه
disabled يُعطّل الحقل — لا يمكن الكتابة فيه
readonly للقراءة فقط — يُرسَل مع البيانات لكن لا يُعدَّل
maxlength أقصى عدد من الأحرف المسموح بها

عناصر نماذج أخرى مهمة

مساحة النص — <textarea>

لكتابة نصوص طويلة متعددة الأسطر — مثل رسالة أو تعليق. على عكس <input type="text">، هذه تدعم الأسطر المتعددة.

<label for="message">رسالتك:</label>
<textarea
    id="message"
    name="message"
    rows="5"
    cols="40"
    placeholder="اكتب رسالتك هنا..."
></textarea>

القائمة المنسدلة — <select>

تُتيح للمستخدم الاختيار من قائمة خيارات جاهزة.

<label for="country">اختر دولتك:</label>
<select id="country" name="country">
    <option value="">-- اختر --</option>
    <option value="sa">المملكة العربية السعودية</option>
    <option value="eg">مصر</option>
    <option value="ma">المغرب</option>
    <option value="ae">الإمارات</option>
</select>

الزر — <button>

أكثر مرونة من <input type="submit"> — يمكنه احتواء HTML داخله.

<!-- زر إرسال داخل نموذج -->
<button type="submit">إرسال النموذج</button>

<!-- زر عادي (لا يُرسل النموذج) -->
<button type="button">انقر هنا</button>

<!-- زر إعادة تعيين -->
<button type="reset">مسح الكل</button>

مثال عملي كامل — نموذج تسجيل

<form action="/register.php" method="POST">

    <!-- الاسم الكامل -->
    <label for="fullname">الاسم الكامل:</label>
    <input type="text" id="fullname" name="fullname" placeholder="محمد أحمد" required>

    <!-- البريد الإلكتروني -->
    <label for="email">البريد الإلكتروني:</label>
    <input type="email" id="email" name="email" placeholder="me@example.com" required>

    <!-- كلمة المرور -->
    <label for="password">كلمة المرور:</label>
    <input type="password" id="password" name="password" minlength="8" required>

    <!-- الجنس -->
    <p>الجنس:</p>
    <input type="radio" id="male" name="gender" value="male">
    <label for="male">ذكر</label>
    <input type="radio" id="female" name="gender" value="female">
    <label for="female">أنثى</label>

    <!-- الاهتمامات -->
    <p>اهتماماتك:</p>
    <input type="checkbox" id="html" name="interests" value="html">
    <label for="html">HTML</label>
    <input type="checkbox" id="css" name="interests" value="css">
    <label for="css">CSS</label>
    <input type="checkbox" id="js" name="interests" value="js">
    <label for="js">JavaScript</label>

    <!-- الدولة -->
    <label for="country">الدولة:</label>
    <select id="country" name="country">
        <option value="sa">السعودية</option>
        <option value="eg">مصر</option>
        <option value="ma">المغرب</option>
    </select>

    <!-- ملاحظات -->
    <label for="notes">ملاحظات إضافية:</label>
    <textarea id="notes" name="notes" rows="4" placeholder="أي معلومات إضافية..."></textarea>

    <!-- زر الإرسال -->
    <button type="submit">إنشاء الحساب</button>
    <button type="reset">مسح النموذج</button>

</form>

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

ما الفرق بين GET وPOST في النموذج؟

GET: البيانات تُضاف إلى URL مرئية للجميع — مناسبة للبحث والفلاتر. POST: البيانات تُرسَل في جسم الطلب مخفية — ضرورية لكلمات المرور والبيانات الحساسة.

ما الفرق بين checkbox وradio؟

checkbox: يمكن تحديد أكثر من خيار في نفس الوقت (لست مضطراً لاختيار واحد فقط). radio: خيار واحد فقط من مجموعة — عندما ترى عدة radio buttons بنفس الـ name، اختيار أحدها يُلغي الباقية.

هل النموذج يعمل بدون PHP؟

النموذج يُعرض في المتصفح دون PHP. لكن لمعالجة البيانات وإرسال بريد أو حفظ في قاعدة بيانات، تحتاج لغة خادم (PHP، Python، Node.js...). بدونها، سيُرسل النموذج لكن لا شيء سيحدث.

لماذا خاصية name ضرورية في الحقول؟

عند إرسال النموذج، البيانات تُرسَل كـ name=value. إذا لم يكن للحقل name، قيمته لن تُرسَل مطلقاً. دائماً أضف name لكل حقل تريد استقبال قيمته في الخادم.

ممتاز! أتقنت الآن بناء النماذج في HTML. في الدرس القادم سنتعلم الألوان (Colors) — كيف تُلوّن عناصر صفحتك بنظام HEX وRGB وHSL.
المحرر الذكي

اكتب الكود وشاهد النتيجة فوراً

جرب الآن مجاناً
قناة ديف عربي

تابع أحدث الدروس والتحديثات مباشرة على واتساب

انضم الآن