2013-08-27 7 views
6
<input type="text" list="numbers"> 

<datalist id="numbers"> 
    <option value="110"> 
    <option value="111"> 
    <option value="112"> 
    <option value="113"> 
    <option value="114"> 
    <option value="115"> 
</datalist> 

http://jsfiddle.net/shvPB/एचटीएमएल 5 DataList में इनपुट मूल्य बदलने

परिदृश्य:
1. उपयोगकर्ता मूल्य विकल्पों में से किसी लिख सकते हैं या नीचे/ऊपर तीर करने के लिए शुरू होता है, और ड्रॉपडाउन सूची विकल्पों का सुझाव।
2. उपयोगकर्ता माउसक्लिक या विकल्प में से किसी एक पर एंटरक्लिक, और महत्वपूर्ण: वह अभी भी सूची को ऊपर/नीचे स्क्रॉल कर सकती है।
3. उपयोगकर्ता इनपुट क्षेत्र के बाहर क्लिक करता है। इनपुट फ़ील्ड अब फोकस में नहीं है।
4. उपयोगकर्ता इनपुट क्षेत्र पर अपनी पसंद और क्लिक बदलना चाहता है लेकिन विकल्प अब और दिखाई नहीं दे रहे हैं।

मैं चरण 4 पर भी विकल्प कैसे दिखा सकता हूं?

+0

मुझे नहीं लगता कि आप प्रोग्रामेटिक रूप से डेटालिस्ट को सक्रिय कर सकते हैं। Http://stackoverflow.com/questions/16133661/programmatically-make-datalist-of-inputtype-url-appear-with-javascript –

+0

आप उसी तरह से नहीं चुन सकते हैं जिससे आप एक चुनिंदा टैग को खोलने के लिए मजबूर नहीं कर सकते। – j08691

+0

@ j08691 कृपया अपने अनुमानों के साथ लोगों को भ्रमित न करें जेएस के साथ खुले चयन करें वास्तव में किया जा सकता है और यहां हल किया गया था: http://stackoverflow.com/questions/10453393/how-to-open-the-select-input-using-jquery ... यह ऐसे दृष्टिकोण को भी दिखाता है जो (या नहीं) डायटलिस्ट के लिए भी काम कर सकता है (अपमान, नातालिस्ट के लिए समाधान नहीं ...) –

उत्तर

1

यह एक विशेष समाधान है, लेकिन (jQuery का उपयोग करके) अपनी आवश्यकताओं के लिए काम करना चाहिए ... ...:

सारांश: अपनी खुद की चयन की तरह तत्व है, यह करने के लिए <datalist> से मानों की प्रतिलिपि बनाएँ। फिर इनपुट करने के लिए 2 घटनाओं को बांधें: फोकस/धुंध पर दिखाएं/छुपाएं। और क्लिक करने के लिए क्लिक() पर एक मान पास करने के लिए प्रत्येक विकल्प-जैसे तत्व में ईवेंट जोड़ें। यह एक बचत तत्व होगा जो तब दिखाई देगा जब <datalist> की ड्रॉपडाउन नहीं होगी। एक मुश्किल बात है - गायब होकर सेटटाइमआउट द्वारा किया जाता है, क्योंकि फोकसआउट (ब्लर) इवेंट को क्लिक इवेंट की तुलना में जल्दी निकाल दिया जाता है ...

फिडल अब तक बनाया गया है: http://jsfiddle.net/xPx2Z/3/ :)/* क्रोम लुक-जैसी ड्रॉपडाउन */

Btw: आप नहीं कर सकते "सही" <select> खोला और अभी भी focus() इनपुट पर एड, तो एक <select> तत्व के साथ समाधान अच्छा नहीं है हो सकता है। इसलिए मैंने थोड़ा जवाब अपडेट किया :)

+0

@ कुल उत्तर टिप्पणी में प्रतिस्थापित होता है, "एक स्वतः पूर्ण कार्य है, यह केवल आपकी सूची में आइटम दिखाएगा जो वर्तमान मान से मेल खाता है। यदि उपयोगकर्ता 11 में प्रवेश करता है, तो आपके सभी विकल्प मेल खाते हैं और सभी प्रदर्शित होंगे। यदि उपयोगकर्ता 110 में प्रवेश करता है, केवल 110 मैचों और केवल 110 प्रदर्शित किए जाएंगे। उपयोगकर्ता को पूरी सूची को फिर से देखने के लिए इनपुट साफ़ करने की आवश्यकता है। जेएस फ़ंक्शन जो ऑनक्लिक पर मूल्य सेट करता है, भी काम करेगा। " – Ajay2707

संबंधित मुद्दे