الوسم input وأنواعه
<input> حقل في نموذج، وسمته type تحدد نوعه. الوسم نفسه يصنع صندوق نص أو شريط تمرير أو منتقي تاريخ أو منتقي ألوان. جرّب كل حقل أدناه واضغط Submit لترى ما يرسله النموذج:
<input> عنصر فارغ، فليس له وسم إغلاق. name هو المفتاح الذي تُرسل القيمة تحته، وvalue هي القيمة الابتدائية. غياب type أو خطأ في كتابته يعطي حقلًا نصيًا عاديًا.
كل أنواع input في HTML
type | ما هو | ملاحظات |
|---|---|---|
text | سطر نص واحد | الافتراضي |
password | نص يظهر كنقاط | ليس مشفرًا بذاته، فأرسله عبر HTTPS |
email | عنوان بريد إلكتروني | يتحقق من الصيغة، ومفتاح @ في لوحات مفاتيح الهواتف |
url | عنوان ويب | يجب أن يبدأ بمخطط مثل https:// |
tel | رقم هاتف | لوحة أرقام الهاتف على الجوال، بلا فحص للصيغة |
search | صندوق بحث | يعرض غالبًا زرًا للمسح |
number | رقم | أزرار زيادة ونقصان، وmin وmax وstep |
range | شريط تمرير | غير دقيق عن قصد، والقيمة رقم |
date | تاريخ | القيمة YYYY-MM-DD |
time | وقت من اليوم | القيمة HH:MM (نظام 24 ساعة) |
datetime-local | تاريخ ووقت بلا منطقة زمنية | القيمة YYYY-MM-DDTHH:MM |
month | سنة وشهر | غير مدعوم في كل المتصفحات |
week | سنة ورقم أسبوع | غير مدعوم في كل المتصفحات |
color | منتقي ألوان | القيمة #rrggbb بأحرف صغيرة |
checkbox | مربع تشغيل وإيقاف | راجع مربع الاختيار checkbox |
radio | خيار واحد من مجموعة | راجع زر الاختيار radio |
file | منتقي ملفات | accept وmultiple |
hidden | قيمة تُرسل ولا تظهر | للمعرّفات والرموز |
submit | زر إرسال | <button type="submit"> أكثر مرونة |
reset | زر إعادة ضبط | نادرًا ما يكون فكرة جيدة |
button | زر لا يفعل شيئًا بنفسه | لـ JavaScript |
image | زر إرسال مرسوم كصورة | يرسل أيضًا إحداثيات النقرة |
الأنواع النصية ولوحات مفاتيح الهواتف
email وurl وtel وsearch وtext كلها تبدو كصندوق نص على الحاسوب. الفرق في التحقق، وعلى الهواتف في لوحة المفاتيح التي تُفتح. الحد في هذا المثال يتحول إلى الأخضر أو الأحمر بحسب حكم المتصفح على القيمة:
ada@exampleبريد صالح في نظر المتصفح: فهو يتحقق فقط من وجود نص و@ونطاق، لا من احتواء النطاق على نقطة. الفحص الحقيقي يجري على الخادم.example.comليسurlصالحًا لأنه بلا مخطط. أماhttps://example.comفصالح.telيقبل أي شيء. صيغ الهواتف تختلف كثيرًا بين الدول، فلا يوجد فحص مدمج، وأضفpatternإن احتجت إلى واحد.inputmode="numeric"تطلب من الهواتف لوحة أرقام من دون مشاكلtype="number"، ولهذا فهي الخيار الصحيح للرموز البريدية ورموز التحقق لمرة واحدة وأرقام البطاقات.
number وrange
كلاهما يأخذ min وmax وstep. number للقيم الدقيقة، وrange شريط تمرير للقيم التي لا يهم فيها الرقم الدقيق كثيرًا. شريط range لا يعرض رقمًا، فاقرنه بـ <output>:
القيمة الافتراضية لـ step في number هي 1، لذلك فحقل السعر الذي بلا step="0.01" يرفض 4.99 عند إرسال النموذج. في JavaScript تكون input.value نصًا دائمًا، فاستخدم input.valueAsNumber للحصول على رقم.
التواريخ والأوقات
أنواع التاريخ والوقت تفتح منتقي المتصفح الخاص. ما يراه القارئ يتبع إعداداته المحلية (09/24/2026، 24.09.2026)، لكن القيمة دائمًا بالصيغة الثابتة نفسها:
هذه الصيغة الثابتة هي ما يستقبله الخادم وما تقرؤه JavaScript، فلا تحتاج أبدًا إلى تحليل «24.09.2026». وتأخذ min وmax الصيغة نفسها. datetime-local بلا منطقة زمنية: إن كان ذلك مهمًا، فحوّل على الخادم باستخدام منطقة القارئ.
color وfile
accept="image/*" تحصر منتقي الملفات في الصور (وتعرض الكاميرا على الهواتف)، وتقبل أيضًا الامتدادات مثل accept=".pdf,.docx". هي مجرد تلميح للمنتقي، فافحص نوع الملف على الخادم. وmultiple تسمح بعدة ملفات. والرفع الحقيقي يحتاج أيضًا إلى method="post" وenctype="multipart/form-data" على النموذج.
اقتراحات بـ datalist
<datalist> يعطي حقل النص قائمة اقتراحات مع السماح بأي قيمة. اربطهما بالسمة list:
اكتب «ja» في الحقل لترى الاقتراحات المطابقة. وعلى عكس القائمة المنسدلة select، يستطيع القارئ كتابة قيمة ليست في القائمة.
سمات تعمل على حقول input
| السمة | وظيفتها |
|---|---|
name | المفتاح الذي تُرسل القيمة تحته |
value | القيمة الابتدائية |
placeholder | تلميح يظهر ما دام الحقل فارغًا (ليس تسمية) |
required | يجب ملؤه قبل الإرسال |
disabled | لا يمكن استخدامه، ولا يُرسل |
readonly | لا يمكن تحريره، لكنه يُرسل |
autocomplete | ما الذي يُملأ تلقائيًا: email أو name أو current-password أو one-time-code أو off |
min, max, step | حدود للأرقام وأشرطة التمرير والتواريخ والأوقات |
minlength, maxlength | حدود الطول للأنواع النصية |
pattern | تعبير نمطي يجب أن تطابقه القيمة كاملة |
inputmode | أي لوحة مفاتيح تظهر على الهاتف: numeric أو decimal أو email أو tel أو url |
list | قيمة id لعنصر <datalist> |
multiple | عدة قيم، لـ email وfile |
accept | أنواع الملفات لـ file |
أخطاء شائعة
type="number"لأرقام الهواتف أو الرموز البريدية أو أرقام البطاقات. هذه ليست كميات. استخدمtelأوtextمعinputmode="numeric".- حقل سعر بلا
step="0.01". القيم العشرية تفشل في التحقق. - استخدام
placeholderكتسمية. يختفي بمجرد أن يكتب القارئ. - الاعتماد على
acceptأوtype="email"للأمان. هي وسائل راحة، والخادم يفحص مجددًا. type="month"أوtype="week"بلا بديل. بعض المتصفحات تعرض حقلًا نصيًا عاديًا.- وسم إغلاق
</input>.<input>عنصر فارغ.
الأسئلة الشائعة
كم عدد أنواع input في HTML؟
22 نوعًا: button وcheckbox وcolor وdate وdatetime-local وemail وfile وhidden وimage وmonth وnumber وpassword وradio وrange وreset وsearch وsubmit وtel وtext وtime وurl وweek. النوع المجهول أو الغائب يتصرف كـ text.
ما نوع input الافتراضي في HTML؟
text. العنصر <input> بلا type، أو بنوع لا يعرفه المتصفح، حقل نصي من سطر واحد.
هل أستخدم type="number" لأرقام الهواتف أو الرموز البريدية؟
لا. number للكميات: يضيف أزرار زيادة ونقصان، ويرفض + والمسافات والشرطات التي تحتويها أرقام الهواتف. استخدم type="tel" لأرقام الهواتف، وtype="text" مع inputmode="numeric" للرموز مثل الرموز البريدية وأرقام البطاقات.
ما الصيغة التي يستخدمها input type date؟
القيمة دائمًا YYYY-MM-DD، مثل 2026-09-24، أيًا كانت الصيغة التي يراها القارئ على الشاشة. العرض يتبع إعدادات القارئ المحلية، أما القيمة المرسلة والمقروءة في السكربت فلا.
هل يحتاج وسم input إلى وسم إغلاق؟
لا. <input> عنصر فارغ: اكتب <input type="text" name="city">. وسم الإغلاق </input> غير صالح، والشرطة المائلة في <input /> مسموحة لكنها لا تفعل شيئًا.