🧩 خصائص النماذج في HTML: أدوات التحكم الأساسية

مرحباً بك مجدداً في رحلتك مع HTML! في الدرس السابق، تعلمنا كيفية بناء هيكل النموذج الأساسي باستخدام الوسم <form>. اليوم، سنتعمق أكثر ونتعرف على الخصائص (Attributes) التي تجعل هذا النموذج ذكياً وقابلاً للاستخدام. فكر في هذه الخصائص كإعدادات تتحكم في: أين تُرسل البيانات؟، كيف تُرسل؟، وماذا يحدث بعد الإرسال؟ 🚀

هذه الخصائص هي ما يحول الصندوق الفارغ إلى أداة اتصال فعالة بين المستخدم والخادم.


📤 الخاصية action: أين تذهب البيانات؟

الخاصية action هي الأهم على الإطلاق. فهي تحدد عنوان URL لصفحة الخادم أو السكريبت الذي سيتلقى البيانات المعبأة في النموذج ويعالجها.

<form action="/submit-contact.php">
  <!-- محتويات النموذج هنا -->
</form>

في هذا المثال، عند الضغط على زر الإرسال، سيتم إرسال جميع بيانات النموذج إلى الملف الموجود على الخادم باسم submit-contact.php لمعالجتها (مثل حفظها في قاعدة بيانات أو إرسالها بريداً إلكترونياً).

ماذا لو تركت action فارغة؟

<form action="">
  <!-- أو يمكن حذفها تماماً: <form> -->
</form>

في هذه الحالة، سيتم إرسال البيانات إلى نفس الصفحة الحالية. هذا مفيد عندما يكون كود معالجة النموذج (مكتوباً بلغة مثل PHP أو Python) موجوداً في نفس صفحة HTML.


📨 الخاصية method: طريقة الإرسال (GET أم POST)

كيف تنتقل البيانات عبر الإنترنت؟ هنا يأتي دور method. لها قيمتان رئيسيتان:

  1. method="get": تُلصق البيانات في نهاية عنوان URL نفسه. تشبه إضافة بحث في جوجل.
    <form action="/search" method="get">
      <input type="text" name="query">
      <button type="submit">ابحث</button>
    </form>
    
    عند إدخال "html" والضغط على بحث، سيتحول الرابط إلى شيء مثل: /search?query=html. هذه الطريقة مناسبة للبحوث، مرئية للجميع، ولها حد في طول البيانات.
  2. method="post": ترسل البيانات في "خلفية" الطلب، دون ظهورها في شريط العنوان. هذه هي الطريقة الافتراضية والأكثر أماناً لإرسال البيانات الحساسة (كلمات المرور، معلومات الدفع) أو الكبيرة (مثل رفع الملفات).
    <form action="/login" method="post">
      <input type="password" name="user_password">
      <button type="submit">تسجيل الدخول</button>
    </form>
    
    🔐 القاعدة الذهبية: استخدم POST للبيانات الحساسة أو التي تغير شيئاً على الخادم (مثل إضافة مستخدم جديد). استخدم GET للطلبات التي لا تغير بيانات (مثل البحث أو التصفية).

🪟 الخاصية target: أين تفتح الاستجابة؟

تتحكم target في مكان فتح صفحة الاستجابة القادمة من الخادم بعد إرسال النموذج. تشبه خاصية target في الروابط (<a>).

<form action="/submit" method="post" target="_blank">
  <!-- محتويات النموذج -->
</form>

القيم الشائعة:

  • _self (الافتراضي): تفتح الاستجابة في نفس النافذة/التبويب.
  • _blank: تفتح الاستجابة في نافذة أو تبويب جديد. مفيد إذا أردت أن يبقى المستخدم على صفحة النموذج الأصلية.
  • _parent, _top: تُستخدم مع الإطارات (Frames) وهي أقل شيوعاً اليوم.

🛡️ خصائص التحسين والأمان

هناك خصائص أخرى تجعل نموذجك أكثر ذكاءً وملاءمة للمستخدم:

  • autocomplete: تتحكم في خاصية الإكمال التلقائي للمتصفح.
    <form autocomplete="on"> <!-- الإفتراضي، يسمح بالإكمال التلقائي -->
    <form autocomplete="off"> <!-- يعطل الإكمال التلقائي لحقول مثل كلمة المرور لمرة واحدة -->
    
  • novalidate: تعطل عملية التحقق من صحة البيانات (Validation) المدمجة في المتصفح قبل الإرسال. تستخدم عندما تريد تنفيذ التحقق بنفسك باستخدام JavaScript.
    <form novalidate>
      <input type="email" required> <!-- لن يظهر تحذير المتصفح "أدخل بريداً إلكترونياً صالحاً" -->
    </form>
    
  • name و id للنموذج: تماماً مثل أي عنصر HTML، يمكنك إعطاء النموذج اسم name ومعرف فريد id. id مهم للربط مع CSS وJavaScript، بينما name قد يستخدم في بعض سياقات البرمجة من طرف الخادم.
    <form id="contactForm" name="contactForm" action="/send">
    </form>
    

🧪 مثال عملي متكامل

لنجمع كل ما تعلمناه في نموذج اتصال بسيط:

<!DOCTYPE html>
<html>
<head>
    <title>اتصل بنا</title>
</head>
<body>
    <h2>📞 نموذج الاتصال</h2>
    <!-- النموذج يرسل البيانات بطريقة آمنة (POST) إلى سكريبت معالجة، ويفتح الرد في نافذة جديدة -->
    <form action="process-contact.php" method="post" target="_blank" autocomplete="on">
        <label for="user_name">الاسم الكامل:</label>
        <input type="text" id="user_name" name="full_name" required>
        <br><br>
        <label for="user_email">البريد الإلكتروني:</label>
        <input type="email" id="user_email" name="email_address" required>
        <br><br>
        <label for="user_msg">رسالتك:</label>
        <textarea id="user_msg" name="message"></textarea>
        <br><br>
        <button type="submit">إرسال الرسالة</button>
    </form>
</body>
</html>

🎯 ملخص الدرس

تعلمنا اليوم أن خصائص النموذج هي مفاتيح التحكم في مصير البيانات:

  • action: العنوان الهدف.
  • method: طريقة الرحلة (GET مرئية، POST سرية).
  • target: نافذة الوصول للرد.
  • خصائص مساعدة مثل autocomplete و novalidate.

بمعرفة هذه الخصائص، أصبح نموذجك جاهزاً من الناحية الهيكلية للتواصل مع الخادم. 👏


ماذا سنتعلم في الدرس القادم؟ 🚀

الآن وبعد أن بنينا النموذج وعرّفنا خصائصه الرئيسية، حان الوقت لملء هذا النموذج بمحتوياته! في الدرس القادم، سنبدأ رحلة استكشاف عناصر إدخال البيانات في HTML مثل <input> بأنواعه المختلفة (نص، كلمة مرور، تاريخ، راديو، اختبار)، بالإضافة إلى <textarea> و <select>. ستتعلم كيف تخلق حقولاً تفاعلية تجمع من المستخدم exactly ما تريد. استعد لتصميم نماذج غنية ومفيدة!