خانات الإختيار في HTML


خانات الإختيار في HTML

يا هلا! اليوم بنتكلم عن شيء بسيط لكنه أساسي ومهم جداً في أي نموذج ويب: خانات الإختيار (Checkboxes). كيف تسويها، وتستخدمها صح، وتخليها تفاعلية.

1. أساسيات خانة الإختيار

عشان تسوي خانة اختيار بسيطة، كل اللي تحتاجه هو وسم <input> مع نوع type="checkbox". بس كذا؟ إيه، بس كذا!

<input type="checkbox">

لو جربت الكود اللي فوق، بتشوف مربع صغير تقدر تضغط عليه عشان تحدده أو تلغي تحديده. بسيط، صح؟

2. الإسم والقيمة: name و value

خانة الإختيار بدون اسم وقيمة مالها فايدة كبيرة لما ترسل النموذج (Form) للسيرفر. لازم تعطيها اسم (name) عشان السيرفر يعرف وش هذي الخانة، وقيمة (value) عشان يعرف وش الإختيار اللي تم تحديده.

<input type="checkbox" name="subscribeNewsletter" value="yes">

هنا، لو المستخدم حدد الخانة هذي، السيرفر بيستقبل بيانات تقول له subscribeNewsletter=yes. لو ما حددها، ما راح يرسل هذي البيانات أصلاً.

3. ربط خانة الإختيار بـ label

عشان تجربة المستخدم تكون أفضل، وخصوصاً للي يستخدمون قارئات الشاشة (Accessibility)، لازم تربط خانة الإختيار بنص وصفي باستخدام وسم <label>. تسوي هالشي عن طريق إعطاء خانة الإختيار id فريد، وبعدين تستخدم نفس الـ id في خاصية for في وسم <label>.

<input type="checkbox" id="termsAccepted" name="terms" value="accepted">
<label for="termsAccepted">أوافق على الشروط والأحكام</label>

الحين، لو المستخدم ضغط على النص "أوافق على الشروط والأحكام"، خانة الإختيار نفسها بتتحدد أو يلغى تحديدها. وهذا أفضل بكثير من أنك تخليه يضغط على المربع الصغير بس.

4. تحديد مسبق: checked

تبغى خانة الإختيار تكون محددة تلقائياً لما الصفحة تتحمل؟ استخدم خاصية checked.

<input type="checkbox" id="rememberMe" name="remember" value="true" checked>
<label for="rememberMe">تذكرني</label>

مجرد وجود كلمة checked كافية لتحديدها. ما تحتاج تعطيها قيمة مثل checked="true".

5. تعطيل خانة الإختيار: disabled

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

<input type="checkbox" id="adminOpt" name="admin" value="yes" disabled>
<label for="adminOpt">خيارات الإدارة (غير متاحة)</label>

خانة الإختيار اللي عليها disabled ما راح يتم إرسال قيمتها للسيرفر عند إرسال النموذج.

6. تجميع خانات الإختيار

في بعض الأحيان، تحتاج مجموعة من الخيارات اللي يقدر المستخدم يختار منها أكثر من خيار واحد (مثلاً، اختيار هوايات متعددة). عشان تجمعها منطقياً، بتعطيها نفس الـ name.

ملاحظة: في الـ HTML، كل خانة اختيار (Checkbox) عندها name خاص فيها. لكن لما ترسل النموذج، المتصفح بيجمع كل الخانات اللي لها نفس الـ name وبيرسلها كقائمة للسيرفر. هذا يختلف عن radio buttons اللي يكون لها نفس الـ name عشان تختار واحد فقط.
<p>اختر هواياتك المفضلة:</p>
<input type="checkbox" id="hobby1" name="hobbies" value="reading">
<label for="hobby1">القراءة</label><br>

<input type="checkbox" id="hobby2" name="hobbies" value="traveling">
<label for="hobby2">السفر</label><br>

<input type="checkbox" id="hobby3" name="hobbies" value="coding">
<label for="hobby3">البرمجة</label><br>

لو المستخدم اختار "القراءة" و "البرمجة"، السيرفر بيستقبل شيء زي hobbies=reading&hobbies=coding (يعتمد على طريقة إرسال النموذج ومعالجة السيرفر).

خلاصة

خانة الإختيار بسيطة لكنها قوية. تذكر دائماً تستخدم name و value عشان تكون مفيدة، وتربطها بـ label عشان تكون سهلة الاستخدام ومتاحة للجميع. بالتوفيق!