HTML: مرجع أنواع الإدخال في HTML
سمة type للعنصر <input> تحدد مظهر وسلوك حقل الإدخال. يوفر HTML أكثر من 20 نوع إدخال تغطي النص والأرقام والتواريخ والاختيار والأزرار والسيناريوهات الأخرى.
1. أنواع إدخال النص
تُستخدم أنواع إدخال النص لجمع أشكال مختلفة من المعلومات النصية:
type="text"— النوع الافتراضي، إدخال نص سطر واحدtype="password"— إدخال كلمة المرور، الأحرف مخفيةtype="email"— عنوان البريد الإلكتروني، يتحقق تلقائيًا من الصيغة، لوحات المفاتيح المحمولة تظهر @type="tel"— رقم الهاتف، لوحات المفاتيح المحمولة تظهر لوحة أرقامtype="url"— إدخال URL، يتحقق تلقائيًا من صيغة URLtype="search"— مربع بحث، بعض المتصفحات تظهر زر مسح
▶ مثال
HTML
<form>
<label>اسم المستخدم: <input type="text" name="username" placeholder="أدخل اسم المستخدم"></label><br>
<label>كلمة المرور: <input type="password" name="password" placeholder="6 أحرف على الأقل"></label><br>
<label>البريد الإلكتروني: <input type="email" name="email" placeholder="you@example.com"></label><br>
<label>الهاتف: <input type="tel" name="phone" placeholder="0555555555"></label><br>
<label>الموقع: <input type="url" name="website" placeholder="https://"></label><br>
<label>بحث: <input type="search" name="q" placeholder="كلمات البحث"></label>
</form>
2. أنواع إدخال الأرقام
تتيح أنواع إدخال الأرقام للمستخدمين تحديد أو إدخال قيم رقمية وقيم ألوان:
type="number"— إدخال رقم، يمكن تقييدminوmaxوsteptype="range"— منزلق اختيار، يعيد قيمة رقميةtype="color"— منتقي ألوان، يعيد قيمة لون ست عشرية
HTML
<form>
### ▶ مثال
<label>الكمية (1-10): <input type="number" name="qty" min="1" max="10" value="1"></label><br>
<label>مستوى الصوت: <input type="range" name="volume" min="0" max="100" value="50"></label><br>
<label>لون السمة: <input type="color" name="theme" value="#ff6600"></label>
</form>
<!-- مزامنة range و number (تتطلب JS) -->
<input type="range" id="slider" min="0" max="100" value="50">
<input type="number" id="numDisplay" min="0" max="100" value="50">
<script>
const slider = document.getElementById('slider');
const num = document.getElementById('numDisplay');
slider.addEventListener('input', () => num.value = slider.value);
num.addEventListener('input', () => slider.value = num.value);
</script>
3. أنواع إدخال التاريخ والوقت
تتيح أنواع إدخال التاريخ والوقت للمستخدمين اختيار التواريخ بسرعة من خلال تقويم أو منتقي وقت:
type="date"— منتقي تاريخ (سنة-شهر-يوم)type="time"— منتقي وقت (ساعة:دقيقة)type="datetime-local"— تاريخ + وقت محليtype="month"— منتقي شهر (سنة-شهر)type="week"— منتقي أسبوع (سنة-أسبوع)
HTML
<form>
<label>التاريخ: <input type="date" name="date"></label><br>
<label>الوقت: <input type="time" name="time"></label><br>
### ▶ مثال
<label>التاريخ + الوقت: <input type="datetime-local" name="datetime"></label><br>
<label>الشهر: <input type="month" name="month"></label><br>
<label>الأسبوع: <input type="week" name="week"></label>
</form>
4. أنواع إدخال الاختيار
تتيح أنواع إدخال الاختيار للمستخدمين الاختيار من عدة خيارات:
type="checkbox"— خانة اختيار، تسمح باختيارات متعددةtype="radio"— زر اختيار، يمكن اختيار واحد فقط لكل مجموعةnametype="file"— رفع ملف، استخدمacceptلتقييد أنواع الملفات
HTML
<form>
<p>الهوايات (اختيارات متعددة):</p>
<label><input type="checkbox" name="hobby" value="reading"> قراءة</label>
<label><input type="checkbox" name="hobby" value="music"> موسيقى</label>
<label><input type="checkbox" name="hobby" value="sports"> رياضة</label>
### ▶ مثال
<p>الجنس (اختيار واحد):</p>
<label><input type="radio" name="gender" value="male"> ذكر</label>
<label><input type="radio" name="gender" value="female"> أنثى</label>
<p>رفع صورة شخصية (صور فقط):</p>
<input type="file" name="avatar" accept="image/png, image/jpeg, image/gif">
</form>
5. أنواع إدخال الأزرار
تُستخدم أنواع إدخال الأزرار لتفعيل إجراءات النموذج:
type="submit"— زر إرسال، يرسل بيانات النموذج إلى الخادمtype="reset"— زر إعادة تعيين، يستعيد عناصر التحكم في النموذج إلى قيمها الأوليةtype="button"— زر عام، يتطلب JavaScript ليكون فعالاًtype="image"— زر صورة، يعمل مثل submit لكن يستخدم صورة بدلاً من نص
HTML
<form action="/submit" method="post">
<label>الاسم: <input type="text" name="name"></label><br>
<!-- زر إرسال -->
<input type="submit" value="إرسال النموذج">
<!-- زر إعادة تعيين -->
### ▶ مثال
<input type="reset" value="إعادة تعيين">
<!-- زر عام -->
<input type="button" value="انقرني" onclick="alert('مرحباً!')">
<!-- زر صورة -->
<input type="image" src="btn-submit.png" alt="إرسال">
</form>
6. الإدخالات المخفية والخاصة
حقول type="hidden" لا تظهر على الصفحة لكنها تُرسل مع النموذج. تُستخدم عادةً لتمرير البيانات الوصفية مثل معرفات المستخدمين ورموز CSRF:
HTML
<form action="/update-profile" method="post">
<!-- غير مرئي للمستخدمين، لكن يُرسل مع النموذج -->
<input type="hidden" name="user_id" value="12345">
<input type="hidden" name="token" value="abc123xyz">
<label>الاسم المستعار: <input type="text" name="nickname"></label>
<input type="submit" value="حفظ">
</form>
▶ مثال
💡 ملاحظة: تُستخدم الإدخالات المخفية عادةً لتمرير معرفات المستخدمين والرموز والبيانات الأخرى التي لا يحتاج المستخدمون لرؤيتها. ومع ذلك، هذه البيانات لا تزال مرئية للمستخدمين (عرض الكود المصدري). لذلك، لا تستخدم الحقول المخفية أبدًا لتخزين معلومات حساسة — يجب أن يتم التحقق الأمني الحقيقي من جانب الخادم.
7. جدول مرجعي كامل لأنواع الإدخال
النوعالوصفالسمات الشائعةtextنص سطر واحدplaceholder, maxlength, patternpasswordكلمة المرور (عرض مخفي)placeholder, maxlengthemailعنوان بريد إلكترونيplaceholder, multipletelرقم هاتفplaceholder, patternurlURL / عنوان ويبplaceholdersearchمربع بحثplaceholdernumberإدخال رقميmin, max, steprangeمنزلق نطاقmin, max, stepcolorمنتقي ألوان—dateمنتقي تاريخmin, max, steptimeمنتقي وقتmin, max, stepdatetime-localتاريخ + وقت محليmin, maxmonthمنتقي شهرmin, maxweekمنتقي أسبوعmin, maxcheckboxخانة اختيار (اختيار متعدد)checkedradioزر اختيارcheckedfileرفع ملفaccept, multiplesubmitزر إرسالvalue, formactionresetزر إعادة تعيينvaluebuttonزر عامvalue, onclickimageزر صورةsrc, althiddenحقل مخفيvalue
❓ أسئلة شائعة
س لماذا استخدام
email و tel و url بدلاً من text فقط؟ج أنواع الإدخال الدلالية توفر ثلاث فوائد: 1) تعرض الأجهزة المحمولة لوحات مفاتيح مناسبة للسياق (
email تعرض رمز @، tel تعرض لوحة مفاتيح رقمية);2) تتحقق المتصفحات من التنسيق تلقائيًا (مثل email يجب أن يحتوي على @);3) تخبر قارئات الشاشة المستخدمين "هذا حقل بريد إلكتروني"، مما يحسن إمكانية الوصول. على الرغم من أن text سيعمل، فإن استخدام النوع الصحيح يوفر تجربة مستخدم أفضل.س ماذا عن عدم اتساق نوع
date بين المتصفحات؟ج هذه مشكلة معروفة منتقيات التاريخ HTML5 — كل من Chrome و Firefox و Safari لديها واجهات مختلفة. الحلول: 1) اقبل الاختلافات واعتمد على تجربة المتصفح الأصلية;2) استخدم مكتبة تاريخ JavaScript (مثل flatpickr) لواجهة موحدة;3) استخدم نوع
text مع تحقق JavaScript للتخصيص الكامل. التوصية: إذا كان التصميم يتطلب الاتساق، استخدم الخيار 2 أو 3;للتجربة الأصلية، استخدم الخيار 1.س ما الفرق بين
number و range؟ متى أستخدم كل منهما؟ج
number لإدخال قيمة رقمية دقيقة — يمكن للمستخدم إدخال قيم مثالية، مناسب للكميات والأعمار والأسعار. range هو منزلق — ينزلق المستخدم فقط ضمن نطاق، مناسب للحجم والسطوع والتقييمات حيث الدقة ليست حرجة. كلاهما يدعم min و max و step لتقييد النطاق. النمط الشائع: استخدم range للتعديل الخشن، number للتعديل الدقيق، واربطهما معًا.س هل نوع
hidden آمن؟ هل يمكن للمستخدمين رؤيته؟ج مدخلات
hidden لا تظهر على الصفحة، لكن يمكن للمستخدمين رؤية قيمها عبر "عرض المصدر" أو DevTools. لا تخزن أبدًا كلمات المرور أو مفاتيح API أو المعلومات الحساسة في hidden. استخدامها الصحيح هوتمرير البيانات الوصفية مثل معرفات المستخدم ورموز CSRF ومعرفات الجلسة. مبدأ الأمان: لا تثق أبدًا ببيانات جانب العميل — يجب أن يحدث التحقق الأمني الحقيقي على الخادم.📖 ملخص
<input type="...">له أكثر من 20 نوعًا، مصنفة حسب الاستخدام: نص، أرقام، تاريخ، اختيار، أزرار، ومخفي- أنواع النص: text، password، email، tel، url، search
- الأنواع الرقمية: number (دقيق)، range (منزلق)، color (منتقي ألوان)
- أنواع التاريخ: date، time، datetime-local، month، week
- أنواع الاختيار: checkbox (اختيار متعدد)، radio (اختيار واحد)، file (رفع)
- أنواع الأزرار: submit، reset، button (عام)، image
- خاص: hidden (حقل مخفي لتمرير البيانات الوصفية)
📝 تمارين
- نموذج تسجيل: أنشئ نموذج "اشتراك" يحتوي على 5+ أنواع إدخال:
text(اسم المستخدم)،email،password،date(تاريخ الميلاد)،radio(الجنس)،checkbox(الهوايات)،file(رفع صورة)،submit، وreset. - مزامنة المنزلق: أنشئ منزلق نطاق وإدخال رقمي يزامنان قيمهما في الوقت الفعلي. النطاق: 0-100، الخطوة: 5.