कैसे एक Datalist बनाने के लिए है कि तुरंत खोजने योग्य है
ड्रॉपडाउन सूचियों के लिए एक साफ तरीका है विकल्प प्रदान करना इनपुट क्षेत्र के लिए, विशेषकर जब उपलब्ध विकल्पों की सूची लंबी हो। एक उपयोगकर्ता उस विकल्प को चुन सकता है जिसे वे चाहते हैं क्षेत्र में टाइपिंग, या विकल्पों के माध्यम से देखो हो सकता है कि वे जिस चीज की तलाश कर रहे हैं, वह मैच हो. विकल्पों के माध्यम से खोज करने में सक्षम होना, हालाँकि, आदर्श समाधान है.
इस व्यवहार के साथ प्राप्त किया जा सकता है HTML तत्व जो इनपुट सुझाव प्रदर्शित करता है विभिन्न नियंत्रणों के लिए, जैसे कि
टैग। हालाँकि
उपयोगकर्ता के पास उपलब्ध विकल्पों को ही दिखाता है पहले से ही कुछ टाइप किया है इनपुट क्षेत्र में.
यदि हम उपयोगकर्ताओं को सक्षम करते हैं तो हम एक इनपुट फ़ील्ड को अधिक उपयोगी बना सकते हैं विकल्पों की पूरी सूची तक पहुँचें किसी भी समय इनपुट लेने की प्रक्रिया के दौरान.
इस पोस्ट में, हम यह देखने जा रहे हैं कि कैसे बनाएँ ड्रॉप-डाउन सूची जो किसी भी समय खोजी जा सकती है का उपयोग करते हुए तथा
HTML तत्व और थोड़ा जावास्क्रिप्ट.
1. विकल्पों के साथ एक Datalist बनाएँ
सबसे पहले, हम अलग-अलग पाठ संपादकों के लिए एक डटलिस्ट बनाते हैं। सुनिश्चित करें कि के मूल्य सूची
की विशेषता टैग के समान है
आईडी
का टैग - यह है कि हम उन्हें एक दूसरे से कैसे बांधते हैं.
2. Datalist को दर्शनीय बनाएं
डिफ़ॉल्ट रूप से HTML तत्व है छिपा हुआ. हम इसे तभी देख सकते हैं, जब हम एक इनपुट टाइप करना शुरू करें क्षेत्र में डकैत से जुड़ा हुआ है.
हालाँकि, डैटिस्ट की सामग्री को "बाध्य" करने का एक तरीका है (अर्थात इसके सभी विकल्प) वेबपेज पर प्रदर्शित होने के लिए. हमें केवल इसे उपयुक्त रूप देने की आवश्यकता है प्रदर्शन
संपत्ति मूल्य के अलावा अन्य कोई नहीं
, उदाहरण के लिए प्रदर्शन क्षेत्र;
.
datalist प्रदर्शन: ब्लॉक;
प्रदर्शित विकल्प अभी तक चयन करने योग्य नहीं हैं इस बिंदु पर, केवल ब्राउज़र विकल्पों को प्रस्तुत करता है यह पाताल के अंदर पाया जाता है.
जैसा कि पूर्वोक्त, निर्मित व्यवहार के कारण तत्त्व, विकल्पों का एक हिस्सा पहले से ही दिखाई देता है और चयन करने योग्य होता है, लेकिन केवल जब उपयोगकर्ता एक स्ट्रिंग में टाइप करना शुरू करता है जिससे ब्राउज़र कर सकता है एक मेल विकल्प खोजें.
हमें बनाने के लिए एक तंत्र खोजने की भी जरूरत है सब विकल्प (ड्रॉपडाउन डटलिस्ट के तहत प्रदर्शित उपरोक्त स्क्रीनशॉट पर) चयन पर इनपुट लेने की प्रक्रिया का कोई अन्य बिंदु - जब उपयोगकर्ता कुछ भी लिखने से पहले विकल्पों की जांच करना चाहते हैं, या जब वे पहले से ही इनपुट क्षेत्र में कुछ ले चुके हों.
3. अंदर लाओ
HTML तत्व
उपयोगकर्ताओं को सक्षम करने के दो तरीके हैं सभी विकल्पों को देखें और चुनें वे जब चाहें:
- हम एक जोड़ सकते हैं ईवेंट हैंडलर पर क्लिक करें हर विकल्प के लिए, और जब यह क्लिक किया जाता है, या हम भी एक विकल्प का चयन करने के लिए इसका उपयोग कर सकते हैं परिवर्तन विकल्प एक वास्तविक ड्रॉप-डाउन सूची में, जो, डिफ़ॉल्ट रूप से, चयन करने योग्य है.
- हम कर सकते हैं विकल्प लपेटें Datalist की उसके साथ
HTML तत्व.
हम दूसरी विधि चुनेंगे, क्योंकि यह सरल है, और इसका उपयोग करने की अनुमति है एक कमबैक तंत्र के रूप में ब्राउज़र में जो समर्थन नहीं करते हैं तत्व। जब कोई ब्राउज़र डेडलिस्ट को प्रस्तुत और प्रदर्शित नहीं कर सकता है, तो यह रेंडर करता है
इसके सभी विकल्पों के साथ तत्व बजाय.
डिफ़ॉल्ट रूप से चुनते हैं
तत्व उन ब्राउज़रों में दिखाई नहीं देता है जो डटलिस्ट का समर्थन करते हैं, अर्थात जब तक हम अपनी सामग्री को प्रस्तुत करने के लिए डटलिस्ट को मजबूर करें उसके साथ प्रदर्शन क्षेत्र;
सीएसएस नियम.
इसलिए, जब हम विकल्प लपेटें उपर्युक्त उदाहरण से (जहां डकैतवादी है प्रदर्शन क्षेत्र
) उसके साथ HTML टैग, कोड नीचे जैसा दिखता है:
सेवा मेरे सभी विकल्प देखें का चुनते हैं
ड्रॉपडाउन सूची में, हमें विशेषताओं का उपयोग करने की आवश्यकता है विभिन्न
एक से अधिक विकल्प दिखाने के लिए, और आकार
उन विकल्पों की संख्या के लिए जिन्हें हम दिखाना चाहते हैं.
4. एक टॉगल बटन जोड़ें
पूर्ण ड्रॉप-डाउन सूची दिखाई देने वाली है केवल जब उपयोगकर्ता एक टॉगल बटन पर क्लिक करता है इनपुट फ़ील्ड के बगल में, जबकि उपयोगकर्ता प्रकार काम कर रहे डेंटलिस्ट को दिखाया गया है। चलो बदलाव प्रदर्शन
डटलिस्ट का मूल्य सेवा मेरे कोई नहीं
, और भी एक बटन जोड़ें इनपुट क्षेत्र के बगल में, जो टॉगल करेगा प्रदर्शन
Datalist के मूल्य, और परिणामस्वरूप की उपस्थिति को ट्रिगर चुनते हैं
.
datalist प्रदर्शन: कोई नहीं;
हमें HTML फ़ाइल में डटलिस्ट के ऊपर निम्न बटन भी जोड़ना होगा:
अब जावास्क्रिप्ट को देखते हैं। सबसे पहले, हम परिभाषित करते हैं प्रारंभिक चर.
बटन = document.querySelector ('बटन'); datalist = document.querySelector ('datalist'); select = document.querySelector ('select'); विकल्प = select.options;
अगला, हमें करने की आवश्यकता है एक घटना श्रोता जोड़ें (toggle_ddl
) बटन के क्लिक इवेंट पर क्लिक करें Datalist की उपस्थिति टॉगल करें.
button.addEventListener ('क्लिक', toggle_ddl);
फिर, हम परिभाषित करते हैं toggle_ddl ()
समारोह। ऐसा करने के लिए, हमें करने की आवश्यकता है के मूल्य की जाँच करें datalist.style.display
संपत्ति. यदि यह एक खाली स्ट्रिंग है, तो डिटालिस्ट छिपा हुआ है, इसलिए हमें इसकी आवश्यकता है इसके मूल्य को निर्धारित करें खंड
, और भी बटन बदलें एक तीर से नीचे की ओर इशारा करते हुए तीर की ओर.
function toggle_ddl () / * यदि DDL छिपा हुआ है * / (यदि (datalist.style.display === ") / * DDL * / datalist.style.display = 'block' दिखाएं; - यह .textContent =" â;-("; और Hide_select (); function Hide_select () / * DDL * / datalist.style.display =" छुपाएं; button.textContent = "एक¢ए-ए¼"
hide_select ()
समारोह डकैत को छुपाता है सेटिंग करके datalist.style.display
खाली स्ट्रिंग पर वापस गुण, और नीचे की ओर इंगित करने के लिए वापस बटन तीर को बदलना.
अंतिम सेटअप में, यदि इनपुट फ़ील्ड में पहले से चयनित विकल्प होता है और ड्रॉप-डाउन सूची भी बाद के बटन पर क्लिक करके चालू हो जाती है, तो प्रीविलेसी चयनित विकल्प भी चयनित के रूप में दिखाया जाना चाहिए ड्रॉप-डाउन सूची में.
तो, चलिए निम्नलिखित हाइलाइट किए गए कोड को इसमें जोड़ते हैं toggle_ddl ()
समारोह:
function toggle_ddl () / * यदि DDL छिपा हुआ है * / (यदि (datalist.style.display === ") / * DDL * / datalist.style.display = 'block' दिखाएं; - यह .textContent =" â;-Ue "; var val = input.value; के लिए (var i = 0; i;हम उस ड्रॉप-डाउन सूची को भी छिपाना चाहते हैं जब उपयोगकर्ता इनपुट फ़ील्ड में टाइप कर रहा हो (उस समय काम करने वाला डेंटलिस्ट दिखाई देगा).
/ * जब उपयोगकर्ता पाठ क्षेत्र में टाइप करना चाहता है, तो DDL * / input = document.querySelector ('इनपुट') छिपाएँ; input.addEventListener ('फ़ोकस', Hide_select);5. विकल्प चुने जाने पर इनपुट अपडेट करें
अंत में, आइए एक जोड़ें
परिवर्तन
आयोजन प्रबंधकर्ता कोटैग, ताकि जब उपयोगकर्ता ड्रॉप-डाउन सूची से एक विकल्प का चयन करे, तो इसका मूल्य अंदर प्रदर्शित होगा
साथ ही क्षेत्र.
/ * जब उपयोगकर्ता DDL से एक विकल्प का चयन करता है, तो उसे टेक्स्ट फ़ील्ड पर लिखें * / select.addventventListener ('परिवर्तन', fill_input); function fill_input () input.value = Options [this.selectedIndex] .value; hide_select ();कमियां
इस तकनीक का मुख्य दोष है शैली के लिए एक सीधा रास्ता की अनुपस्थिति
तत्त्व सीएसएस के साथ (की उपस्थिति)
तथा
टैग विभिन्न ब्राउज़रों में भिन्न होते हैं).
इसके अलावा, फ़ायरफ़ॉक्स में, इनपुट टेक्स्ट को उन विकल्पों के विरुद्ध मिलान किया जाता है जो शामिल इनपुट वर्ण, जबकि अन्य ब्राउज़र विकल्प से मेल खाते हैं से शुरू वे पात्र। डतालिस्ट के लिए W3C कल्पना स्पष्ट रूप से निर्दिष्ट नहीं करती है कि मिलान कैसे किया जाना चाहिए.
इसके अलावा, यह तरीका अच्छा है और सभी प्रमुख ब्राउज़रों में काम करता है, ब्राउज़रों में जहां यह काम नहीं कर सकता है, उपयोगकर्ता अभी भी ड्रॉप-डाउन सूची देख सकते हैं, केवल सुझाव नहीं दिखाई देंगे.
नीचे सीएसएस स्टाइल के साथ अंतिम डेमो देखें: