كيفية إنشاء Datalist التي يمكن البحث فيها على الفور
القوائم المنسدلة هي وسيلة أنيقة ل توفير الخيارات لحقل إدخال ، خاصةً عندما تكون قائمة الخيارات المتاحة طويلة. يمكن للمستخدم اختيار الخيار الذي يريده الكتابة في هذا المجال, أو انظر من خلال الخيارات قد تكون مطابقة لما يبحثون عنه. أن تكون قادرة على البحث من خلال الخيارات, ومع ذلك ، هو الحل المثالي.
هذا السلوك يمكن أن يتحقق مع عنصر HTML ذلك يعرض اقتراحات المدخلات لعناصر تحكم مختلفة ، مثل
العلامة. ومع ذلك
يظهر فقط الخيارات المتاحة عندما يكون لدى المستخدم كتبته بالفعل شيء في مجال الإدخال.
يمكننا أن نجعل حقل الإدخال أكثر قابلية للاستخدام إذا مكّننا المستخدمين من ذلك الوصول إلى قائمة كاملة من الخيارات في أي وقت أثناء عملية أخذ الإدخال.
في هذا المنشور ، سنرى كيفية إنشاء ملف القائمة المنسدلة التي يمكن البحث فيها في أي وقت باستخدام و
عناصر HTML وجافا سكريبت قليلا.
1. إنشاء Datalist مع خيارات
أولاً ، نقوم بإنشاء حافز لمحرري النصوص المختلفة. تأكد من أن قيمة قائمة
سمة من بطاقة بالضبط مثل ال
هوية شخصية
من العلامة - هذه هي الطريقة التي نربطها ببعضها البعض.
2. جعل Datalist مرئية
افتراضيا ، فإن عنصر HTML هو مخفي. يمكننا أن نرى ذلك فقط ، عندما نكون البدء في كتابة المدخلات في الحقل يتم إرفاق datalist ل.
ومع ذلك ، فهناك طريقة "لفرض" محتوى الطبيب (أي كل خياراته) لتظهر على صفحة الويب. نحن فقط بحاجة إلى إعطائها مناسبة عرض
قيمة العقار غير ذلك لا شيء
, على سبيل المثال العرض محجوب؛
.
datalist display: block؛
الخيارات المعروضة لا يمكن اختياره بعد في هذه المرحلة ، المتصفح فقط يجعل الخيارات يجدها داخل الطبيب.
كما هو مذكور أعلاه ، وذلك بسبب السلوك المدمج في جزء, جزء من الخيارات تظهر بالفعل وقابلة للتحديد, ولكن فقط عندما يبدأ المستخدم في كتابة سلسلة يمكن للمتصفح استخدامها العثور على خيار مطابقة.
نحن بحاجة أيضا إلى إيجاد آلية لجعل الكل خيارات (في لقطة الشاشة أعلاه معروضة أسفل القائمة المنسدلة) اختيار في أي نقطة أخرى من عملية أخذ المدخلات - عندما يرغب المستخدمون في التحقق من الخيارات قبل كتابة أي شيء ، أو أثناء قيامهم بالفعل بأخذ شيء في حقل الإدخال.
3. أحضر
عنصر HTML
هناك طريقتان لتمكين المستخدمين من رؤية وتحديد جميع الخيارات كلما أرادوا:
- يمكننا إضافة انقر فوق معالج الأحداث لكل خيار ، واستخدامه لتحديد خيار عند النقر عليه ، أو يمكننا أيضا تحول الخيارات في قائمة المنسدلة الحقيقية, التي ، افتراضيا ، هو اختيار.
- في وسعنا التفاف الخيارات من طبيب الأسنان مع ال
عنصر HTML.
سنختار الطريقة الثانية ، لأنها أبسط ، ويسمح باستخدامها كآلية احتياطي في المتصفحات التي لا تدعم جزء. عندما يتعذر على المستعرض عرض وعرضه ، يجعل
عنصر مع كل خياراته في حين أن.
افتراضيا ، فإن تحديد
لا يظهر العنصر في المتصفحات التي تدعم datalist ، أي ، حتى نحن إجبار الطبيب على تقديم محتواه مع ال العرض محجوب؛
حكم CSS.
اذا نحن التفاف الخيارات من المثال أعلاه (حيث يوجد لدى datalist العرض محجوب
) مع ال علامة HTML ، يبدو الرمز أدناه:
إلى رؤية جميع الخيارات من تحديد
في القائمة المنسدلة ، نحتاج إلى استخدام السمات مضاعف
لإظهار أكثر من خيار ، بحجم
لعدد الخيارات التي نريد أن نعرضها.
4. إضافة زر تبديل
من المفترض أن تظهر القائمة المنسدلة الكاملة فقط عندما يكون المستخدم ينقر على زر تبديل بجانب حقل الإدخال ، في حين أن المستخدم يقوم بكتابة datalist العامل. دعونا غير ال عرض
قيمة طبيب الأسنان إلى لا شيء
, و أيضا أضف زر بجانب حقل الإدخال ، والذي سيؤدي إلى تبديل عرض
قيمة طبيب الأسنان ، وبالتالي يؤدي ظهور تحديد
.
datalist display: none؛
نحتاج أيضًا إلى إضافة الزر التالي أعلى datalist في ملف HTML:
الآن دعونا نرى جافا سكريبت. أولا ، نحدد المتغيرات الأولية.
button = document.querySelector ('button') ؛ datalist = document.querySelector ('datalist')؛ select = document.querySelector ('select')؛ خيارات = select.options ؛
بعد ذلك ، نحن بحاجة إلى إضافة مستمع الحدث (toggle_ddl
) إلى الحدث انقر فوق الزر الذي سوف تبديل مظهر datalist.
button.addEventListener ("انقر" ، toggle_ddl) ؛
ثم ، نحدد toggle_ddl ()
وظيفة. للقيام بذلك ، نحن بحاجة إلى تحقق من قيمة datalist.style.display
خاصية. إذا كانت عبارة عن سلسلة فارغة ، فسيتم إخفاء محفوظ البيانات ، لذلك نحن بحاجة إلى ذلك اضبط قيمته على منع
, وكذلك ل تغيير الزر من سهم التأشير لأسفل إلى سهم يشير لأعلى.
الدالة toggle_ddl () / * إذا كانت DDL مخفية * / إذا (datalist.style.display === ") / * show DDL * / datalist.style.display = 'block'؛ this.textContent =" âÂ-² "؛ else hide_select ()؛ function hide_select () / * hide DDL * / datalist.style.display ="؛ button.textContent = "âÂ-¼"؛
ال hide_select ()
وظيفة يخفي datalist من خلال تحديد datalist.style.display
خاصية العودة إلى سلسلة فارغة ، وتغيير زر السهم مرة أخرى للإشارة إلى أسفل.
في الإعداد النهائي ، إذا كانت حقول الإدخال تحتوي على خيار محدد مسبقًا وكانت القائمة المنسدلة قد تم تشغيلها أيضًا بنقرة زر لاحقة ، فإن الخيار previoulsy المحدد أيضًا يجب أن تظهر كما هو محدد في القائمة المنسدلة.
لذلك ، دعونا نضيف الكود المميز التالي إلى toggle_ddl ()
وظيفة:
الدالة toggle_ddl () / * إذا كانت DDL مخفية * / إذا (datalist.style.display === ") / * show DDL * / datalist.style.display = 'block'؛ this.textContent =" âÂ-² "؛ var val = input.value ؛ لـ (var i = 0؛ iنريد أيضًا إخفاء القائمة المنسدلة عندما يكتب المستخدم في حقل الإدخال (في الوقت الذي سيظهر فيه العامل الأساسي).
/ * عندما يريد المستخدم الكتابة في حقل النص ، قم بإخفاء DDL * / input = document.querySelector ('input') ؛ input.addEventListener ('focus'، hide_select)؛5. تحديث الإدخال عند تحديد خيار
وأخيرا ، دعونا أضف
يتغيرون
معالج الحدث إلى، بحيث عندما يحدد المستخدم خيارًا من القائمة المنسدلة ، سيتم عرض قيمته داخل
الحقل كذلك.
/ * عندما يحدد المستخدم خيارًا من DDL ، اكتبه إلى حقل النص * / select.addEventListener ('تغيير' ، fill_input) ؛ function fill_input () input.value = options [this.selectedIndex] .value؛ hide_select ()؛عيوب
العيب الرئيسي لهذه التقنية هو عدم وجود طريقة مباشرة لأسلوب
جزء مع المغلق (ظهور
و
تختلف العلامات بين المتصفحات المختلفة).
أيضًا ، في Firefox ، يتم مطابقة نص الإدخال مع الخيارات التي يحتوي على أحرف الإدخال ، في حين أن المتصفحات الأخرى تطابق الخيارات التي إبتدئ ب تلك الشخصيات. لا تحدد مواصفات W3C لـ datalist بشكل صريح كيفية إجراء المطابقة.
بخلاف ذلك ، هذه الطريقة جيدة و يعمل في جميع المتصفحات الرئيسية, بينما في المتصفحات حيث قد لا تعمل ، لا يزال بإمكان المستخدمين رؤية القائمة المنسدلة ، لن تظهر الاقتراحات فقط.
تحقق من العرض التوضيحي النهائي مع القليل من التصميم CSS أدناه: