النماذج في HTML

العنصر form

بداخله تعيش جميع العناصر التفاعلية

تقديم

كتب هذا المقال أشرف عبدالدايم مطور واجهة المستخدم في TieLabs سابقاً، 95% من كود CSS الموجود في قالب جنة من كتابة أشرف :)

العنصر <form>

تم إنشاء العنصر <form>  في HTML ليقوم بجمع مدخلات المستخدمين، العنصر <form> من عناصر الـ block-level، يقوم هذا العنصر بتعريف الجزء التفاعلي في صفحة الويب.

جميع حقول النماذج ( <input> و <textarea> و <button>,…)، يجب أن تكون داخل العنصر <form> هكذا:

  • هناك خاصين لابد من تواجدهما في العنصر <form> حتى تكتمل وظيفته:
    الخاصية action:  تحتوي على رابط الصفحة التي ستذهب إليها عندما تقوم بالضغط على زر إرسال.
  • الخاصية method:  تحدد كيفية إرسال البيانات التي تم إدخالها في النموزج، ولها طريقتين، GET و POST.

وعادةً ترسل هذة البيانات إلى المستضيف (Server) حيث يتم تخزينها هناك. ويتم معالجة هذة البيانات بإستخدام لغات البرمجة التي تعمل على المستضيف مثل PHP

إذن فالنموذج يتكون من مجموعة من الحقول تعمل مع بعضها البعض لإنجاز وظيفة معينه، على سبيل المثال، نموذج تسجيل الدخول في كل المواقع تقريباً يتكون من ثلاثة حقول:

  1. حقل إدخال الإسم أو البريد الإلكتروني.  <“input type=”text>  أو <“input type=”email>.
  2. حقل إدخال كلمة المرور <“input type=”password> .
  3. زر الإرسال <“input value=”إرسال” type=”submit>.

الحقول الثلاثة لابد أن يكون موجودين داخل نموذج واحد <“form action=”/login” method=”POST> وهكذا يمكنك بناء أي نموذج آخر.

خواص العنصر <form>

الخاصية action

تقوم بتحديد الإجراء الذي سيحدث عندما يقوم المستخدم بالضغط على زر إرسالة (Submit).

عادةً الإجراء الذي يحدث هو إرسال البيانات التي تم إدخالها في النموذج إلى صفحة موجودة على المستضيف (Server) ، وفي المثال السابق يتم إرسال البيانات إلى الصفحة action_page.php  هذة الصفحة تحتوي على كود مكتوب بلغة من لغات البرمجة التي تعمل على المستضيف مثل لغة PHP، وهذا الكود يقوم بمعالجة البيانات التي أرسلناها له من النموذج.

وفي حالة عدم وجود الخاصية action  ضمن خواص العنصر <form> سيتم استخدام الصفحة الحالية بشكل إفتراضي، أي عندما يقوم المستخدم بالضغط على زر إرسال سيتم تحميل الصفحة الموجود بها النموذج مرةً أخرى.

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

القيمة الإفتراضية للخاصية target هي self_ أي فتح الصفحة الموجودة في الخاصية action في الصفحة الحالية. ويمكنك فتحها في تبيويب جديد في المتصفح بإستخدام القيمة  blank_

الخاصية method

تحدد كيفية إرسال البيانات التي تم إدخالها في النموذج ، طريقة HTTP المستخدمة في إرسال البيانات (GET أو POST)

أو

أما عن كيفية عمل الـ GET والـ POST فهي خارج نطاق HTML لكن دعنا نوضح الفرق بينهم سريعاً كي تكون على علم بما يحدث في الكواليس :)

متى تستخدم الطريقة GET؟

الطريقة الإفتراضية في إرسال البيانات من النموذج هي GET. وعندما تستخدم هذة الطريقة سيتم إرسال جميع البيانات الموجودة في النموذج عن طريق رابط الصفحة التي ستذهب إليها لتعالج البيانات (الصفحة الموجودة في الخاصية action) أي أن جميع البيانات التي أدخلتها ستظهر في رابط الصفحة.

في المثال السابق، لو قمنا بإدخال اسم المستخدم ashraf وكلمة المرور 123456 ، بعد الضغط على زر إرسالة ستذهب إلى صفحة معالجة البيانات action_page.php وسيكون رابط الصفحة هكذا:

ما هذا؟!!!! كلمة المرور التي أدخلتها تظهر بصورة صريحة في رابط الصفحة!! نعم ستظهر هكذا عندما تستخدم الطريقة GET لذلك لا تستخدم الطريقة GET إطلاقاً في حالة احتواء النموذج على أي بيانات هامة أو معلومات خاصة أو أي بيانات تريد الحفاظ على سريتها وتأمينها.

ملاحظات عن الطريقة GET:

  • تقوم بإلحاق البيانات التي أدخلتها في النموذج برابط الصفحة التي ستذهب إليها، عن طريق وضعها كأزواج من (الإسم = القيمة).
  • طول رابط الصفحات محدود (٣٠٠٠ حرف فقط)، لذلك لا يمكنك استخدام الطريقة GET لإرسال بيانات ذات حجم كبير.
  • لا تستخدمها في إرسال البيانات الهامة والحساسة، حيث أن البيانات تظهر في رابط المتصفح.
  • يمكن للمستخدم حفظ (bookmark) صفحة النتيجة في متصفحه للعودة إليها لاحقاً.
  • جيدة في حالة البيانات الغير حساسة، مثل نتائج البحث في جوجل.

متى تستخدم الطريقة POST؟

استخدم الطريقة POST دائماً عندما تحتوي البيانات التي سيتم إرسالها على معلومات هامة وحساسة، حيث أن الطريقة POST لا تظهر البيانات في رابط الصفحة التي ستذهب إليها.

ملاحظات عن الطريقة POST:

  • الطريقة POST ليس لها حد معين من البيانات، لذلك يمكنك إستخدامها لإرسال عدد كبير من البيانات.
  • لا يمكن للمستخدم حفظ صفحة النتيجة، حيث أن الصفحة لا تحتوي على رابط بالبيانات المُرسلة كما هو الحال في الطريقة GET.

العنصر <fieldset>

العنصر <fieldset> يستخدم في عمل مجموعات من حقول الإدخال المتعلقة ببعضها البعض داخل النموذج.

العنصر <legend> يستخدم لوضع عنوان لهذة المجموعات داخل العنصر <fieldset>.

الخاصية name

كل حقل من حقول الإدخال أياً كان نوعه، لابد من احتواءه على الخاصية name، وفي حالة عدم إحتواء الحقل عليها لن يتم إرسال البيانات الموجودة داخل هذا الحقل.

الإسم الأول:

الإسم الأخير:


عندما تقوم بالضغط على زر إرسال (submit) سيتم إرسال قيمة الحقل الذي يحمل إسم فقط وسيتم تجاهل كافة الحقول التي لا تحمل الخاصية name.

وهذة قائمة بجميع خصائص العنصر <form>

الخاصية الوصف
action تحدد الصفحة التي ستذهب إليها عندما تقوم بالضغط على زر إرسال، القيمة الإفتراضية: الصفحة الحالية.
method تحدد طريقة إرسال البيانات التي تم إدخالها في النموذج،القيمة الإفتراضية: GET
target تحدد ما إذا كانت النتيجة التي تم إرسالها ستفتح في علامة تبويب جديدة في المتصفح أو في النافذة الحالية.
name تستخدم لتمييز النموذج بإسم معين (تستخدم بعد ذلك في أكواد الجافاسكريبت)
autocomplete تحدد ما إذا كان المتصفح سيقوم بملئ النموذج تلقائياً (من القيم التي أدخلتها من قبل) أم لا، القيمة الإفتراضية: on
accept-charset تستخدم لتحديد نوع الرموز (الأحرف) المستخدمة في الصفحة وطريقة تشفيرها، القيمة الإفتراضية: القيمة المستخدمة للصفحة ككل.
enctype تستخدم لتحديد ترميز البيانات المرسلة، القيمة الإفتراضية: url-encoded
novalidate تحدد ما إذا كان المتصفح سيقوم بتصحيح الأخطاء في النموذج أم لا.
 
بيانات خاصة: الإسم الأول:

الإسم الأخير:



بيانات الحساب: إسم المستخدم:

البريد الإلكتروني:



 

أشرف عبدالدايم

مصري، أب، مطور واجهة المستخدم في TieLabs سابقاً، أحب كتابة المقالات التعليمة وأشعر أنها واجب على كل المهتمين بالمجال، حتى يتم توفير محتوى عربي لائق يساهم بشكل فعال في بناء جيل من المطورين والمبرمجين والمصميمن تعلّم بطريقة صحيحة منذ بداية رحلته التعليمية.
زر الذهاب إلى الأعلى
إغلاق