تجميع عناصر النموذج المشتركة في HTML
يا جماعة، لما بنشتغل على نماذج HTML، خصوصاً النماذج الطويلة أو المعقدة، بيكون مهم جداً إننا ننظم العناصر دي بطريقة منطقية. مش بس عشان الشكل يكون حلو، لكن الأهم عشان المستخدم يفهم النموذج بسهولة، وكمان عشان برامج قراءة الشاشة (Screen Readers) تقدر تفهم المحتوى وتقدمه للمستخدمين أصحاب الهمم بشكل أفضل. هنا هنتكلم عن طريقتين أساسيتين لتجميع العناصر دي.
1. استخدام <fieldset> و <legend> (الطريقة الأفضل سيمانتيكياً)
دي الطريقة اللي HTML نفسها موصية بيها لتجميع العناصر اللي ليها علاقة ببعض.
العنصر <fieldset> بيعمل إطار حول مجموعة من عناصر النموذج، و <legend> بيضيف عنوان أو وصف للمجموعة دي جوه الإطار.
فكر فيها كإنك بتحط مجموعة أسئلة عن "معلومات الاتصال" جوه صندوق واحد بعنوان "معلومات الاتصال".
ملاحظة سريعة: استخدام
<fieldset>و<legend>مش بس بيخلي شكل النموذج منظم، ده كمان بيساعد جداً في إمكانية الوصول (Accessibility). برامج قراءة الشاشة بتعرف إن العناصر اللي جوه<fieldset>مرتبطة ببعضها، وبتقرأ الـ<legend>كعنوان للمجموعة.
مثال:
<form action="/submit-form" method="post">
<fieldset>
<legend>معلومات شخصية</legend>
<label for="fname">الاسم الأول:</label><br>
<input type="text" id="fname" name="fname"><br><br>
<label for="lname">الاسم الأخير:</label><br>
<input type="text" id="lname" name="lname"><br><br>
</fieldset>
<fieldset>
<legend>معلومات الاتصال</legend>
<label for="email">البريد الإلكتروني:</label><br>
<input type="email" id="email" name="email"><br><br>
<label for="phone">رقم الهاتف:</label><br>
<input type="tel" id="phone" name="phone"><br><br>
</fieldset>
<input type="submit" value="إرسال">
</form>
2. استخدام <div> (للتجميع العام والتنسيق)
ممكن طبعاً تستخدم <div> لتجميع عناصر النموذج. الـ <div> هو عنصر حاوية عام بيستخدم لأغراض التنسيق أو تجميع عناصر معينة مع بعض.
لكن، من الناحية السيمانتيكية، <div> مش بيوصل نفس المعنى اللي بيوصله <fieldset> لبرامج قراءة الشاشة.
غالباً بنستخدم <div> لما بنحتاج نجمع عناصر بس عشان نطبق عليها تنسيقات CSS معينة، أو لما يكون التجميع مش بيعبر عن مجموعة منطقية بنفس قوة الـ <fieldset>.
مثال:
<form action="/submit-form" method="post">
<div style="border: 1px solid #ccc; padding: 10px; margin-bottom: 15px;">
<h3>بيانات الدخول</h3>
<label for="username">اسم المستخدم:</label><br>
<input type="text" id="username" name="username"><br><br>
<label for="password">كلمة المرور:</label><br>
<input type="password" id="password" name="password"><br><br>
</div>
<div style="border: 1px solid #ccc; padding: 10px;">
<h3>خيارات إضافية</h3>
<input type="checkbox" id="newsletter" name="newsletter">
<label for="newsletter">الاشتراك في النشرة الإخبارية</label><br><br>
<input type="checkbox" id="terms" name="terms">
<label for="terms">أوافق على الشروط والأحكام</label><br><br>
</div>
<input type="submit" value="إرسال" style="margin-top: 20px;">
</form>
تلميح: لو هدفك الأساسي هو تجميع سيمانتيكي يخدم إمكانية الوصول، استخدم
<fieldset>و<legend>. لو التجميع لأغراض التنسيق أو ترتيب العناصر بشكل عام،<div>هيكون كافي. ممكن طبعاً تستخدم الاتنين مع بعض، مثلاً<div>جوه<fieldset>لتنسيق معين داخل المجموعة.
الخلاصة
تجميع عناصر النموذج مش رفاهية، ده ضرورة عشان نعمل نماذج سهلة الاستخدام وفي نفس الوقت تدعم إمكانية الوصول.
ركز على <fieldset> و <legend> لما يكون عندك مجموعة عناصر مرتبطة منطقياً، واستخدم <div> للتجميع الأغراض التنسيقية أو الترتيب العام.
بكده، هتكون بتبني نماذج أقوى وأفضل لكل المستخدمين.