عنصر Datalist للإكمال التلقائي
اقتراح قيم الإدخال باستخدام عنصر datalist
عنصر Datalist للإكمال التلقائي درس مجاني في HTML Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في HTML Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة HTML Academy 4 دروس في المجموع.
ما هو datalist؟
يوفر عنصر <datalist> قائمة من الاقتراحات المحددة مسبقًا لعنصر <input>:
<label for="browser">Favorite browser</label>
<input list="browsers" id="browser" name="browser">
<datalist id="browsers">
<option value="Chrome">
<option value="Firefox">
<option value="Safari">
<option value="Edge">
</datalist>
<!-- list attribute links input to datalist by id -->
<!-- User can type freely OR select a suggestion -->datalist مقابل select
الفرق الأساسي بين <datalist> و<select>:
- datalist — نص حر مع اقتراحات، إذ يمكن للمستخدم كتابة أي شيء
- select — اختيار مقيّد، إذ يجب على المستخدم الاختيار من القائمة
استخدم datalist عندما تريد اقتراح قيم دون تقييد الإدخال.
ربط datalist بـ input
يجب أن تطابق السمة list في <input> قيمة id في <datalist>:
<input type="text" list="fruits" name="fruit">
<datalist id="fruits">
<option value="Apple">
<option value="Banana">
<option value="Cherry">
</datalist>datalist مع أنواع input مختلفة
يعمل <datalist> مع أنواع عديدة من input:
<!-- text + datalist: type-ahead suggestions -->
<input type="text" list="countries">
<!-- range + datalist: tick marks -->
<input type="range" min="0" max="100" step="10" list="marks">
<datalist id="marks">
<option value="0"> <option value="25">
<option value="50"> <option value="75"> <option value="100">
</datalist>
<!-- color + datalist: color palette shortcuts -->
<input type="color" list="brand-colors">
<datalist id="brand-colors">
<option value="#0070f3">
<option value="#e86f00">
</datalist>السمة label في datalist
يمكن أن تتضمن الخيارات في datalist تسمية ظاهرة وقيمة مُرسلة:
<datalist id="countries">
<option value="US">United States</option>
<option value="GB">United Kingdom</option>
<option value="DE">Germany</option>
</datalist>
<!-- In some browsers, label shows in dropdown
value is submitted when the option is selected -->تصفية الاقتراحات
يصفّي المتصفح الاقتراحات أثناء كتابة المستخدم:
- تختلف خوارزمية المطابقة من متصفح إلى آخر
- تطابق بعض المتصفحات من بداية السلسلة، بينما تطابق أخرى في أي موضع منها
- لا يمكنك التحكم في سلوك التصفية الذي ينفذه المتصفح
- للتصفية المخصّصة، أنشئ مكوّن إكمال تلقائي مخصّصًا باستخدام ARIA
datalist ديناميكي باستخدام JavaScript
حدّث خيارات datalist ديناميكيًا:
<input type="text" list="suggestions" id="search-input">
<datalist id="suggestions"></datalist>
<script>
document.getElementById('search-input').addEventListener('input', async function() {
const query = this.value;
const res = await fetch(`/api/search?q=${query}`);
const items = await res.json();
const dl = document.getElementById('suggestions');
dl.innerHTML = items.map(item =>
`<option value="${item.name}">`
).join('');
});
</script>إتاحة datalist
اعتبارات إتاحة datalist:
- تعلن قارئات الشاشة عن الاقتراحات باعتبارها listbox
- يمكن للمستخدمين التنقل بين الاقتراحات باستخدام مفاتيح الأسهم
- يظل الإدخال يقبل النص الحر — لذا تأكد من أن التحقق يتعامل مع ذلك
ملاحظات حول دعم المتصفحات
دعم المتصفحات لـ datalist جيد، لكنه يتضمن بعض الاختلافات:
- Chrome وEdge وFirefox: دعم كامل
- Safari: مدعوم بدءًا من Safari 12.1+
- متصفحات الأجهزة المحمولة: يعرض معظمها الاقتراحات، لكن تختلف واجهة المستخدم
- اختبر دائمًا على المتصفحات المستهدفة قبل الاعتماد على datalist
متى لا تستخدم datalist
لا يكون datalist مناسبًا عندما:
- تحتاج إلى تحقق صارم، أي يجب على المستخدم الاختيار من القائمة
- تحتاج إلى تنسيق مخصّص للخيارات، إذ يتحكم المتصفح في المظهر بالكامل
- تحتاج إلى تجميع الخيارات، إذ لا يدعم datalist optgroup
في هذه الحالات، استخدم مكوّن إكمال تلقائي مخصّصًا مع ARIA role="combobox".
datalist مقابل حقل بحث مع autocomplete
قارن بين datalist وحقل البحث الذي يستخدم autocomplete:
<input type="search" name="q" list="search-suggestions">
<datalist id="search-suggestions">
<option value="HTML tutorial">
<option value="HTML forms">
<option value="HTML accessibility">
</datalist>
<!-- type="search" provides search-specific UI on mobile -->
<!-- list attribute adds datalist suggestions to any input type -->اختبار سريع
كيف تربط input بعنصر datalist الخاص به؟
مراجعة: datalist
أساسيات Datalist:
<datalist id>+<input list>— يرتبطان عبر تطابق id وlist- يمكن للمستخدم الكتابة بحرية أو اختيار اقتراح
- استخدم
<select>عندما يجب تقييد الاختيار - يعمل مع النص والأرقام والنطاقات والألوان وأنواع input أخرى
- تُصفّى الاقتراحات أثناء كتابة المستخدم
الأسئلة الشائعة
هل درس «عنصر Datalist للإكمال التلقائي» مجاني؟
نعم — نص درس «عنصر Datalist للإكمال التلقائي» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة HTML Academy، انتقل إلى CoddyKit PRO. تتضمن دورة HTML Academy 4 دروس في المجموع.
ماذا ستتعلم في «عنصر Datalist للإكمال التلقائي»؟
اقتراح قيم الإدخال باستخدام عنصر datalist تتمرن على HTML Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ HTML Academy؟
لا تُشترط خبرة سابقة. HTML Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «عنصر Datalist للإكمال التلقائي»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس HTML Academy هذا؟
نعم. كل درس في HTML Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- قوائم Select وoption المنسدلة
- عنصر Textarea للإدخال متعدد الأسطر
- مجموعات مربعات الاختيار وأزرار الاختيار
- عنصر Datalist للإكمال التلقائي