मैं एक और प्लगइन से select2 to use as a tagging plugin पर माइग्रेट कर रहा हूं लेकिन एक अंतर है जिसे मैं समझने की कोशिश कर रहा हूं कि चयन 2 का समर्थन कर सकता है या नहीं।टैग के साथ select2 jquery प्लगइन के साथ: सच है, आप पहले से चुने गए ड्रॉपडाउन में विकल्पों को दिखाने से कैसे रोक सकते हैं?
एक उदाहरण देखें। कहते हैं कि विकल्प (Ajax अनुरोध से सर्वर साइड वापस आ रहा) की मेरी सूची
"Dog", "Cat", "Monkey", "Giraffe"
मैं उपयोग कर रहा हूँ पुराने प्लगइन में है, के बाद मैं विकल्पों में से एक का चयन (देता है कहते हैं कि "बिल्ली") की सुविधा देता है और यह में दिखाई देता है टेक्स्टबॉक्स, अगली बार जब मैं एक ही आंशिक स्ट्रिंग ("सीए" कहता हूं) की खोज करता हूं, तो यह "टी" है "कैट" विकल्पों के ड्रॉपडाउन में दिखाई देता है (जैसा कि यह पता है कि आपने इसे पहले ही चुना है)
ऐसा लगता है कि चयन 2 अभी भी ड्रॉपडाउन में आइटम दिखाता है, भले ही आपने इसे पहले से चुना है। चयन 2 आपके द्वारा दर्ज किए जाने के बाद प्रवेश करने से रोकता है लेकिन यह थोड़ा अनजान लगता है इसलिए मैं यह पता लगाने की कोशिश कर रहा हूं कि कोई रास्ता है या नहीं चयन 2 के लिए उसी व्यवहार को दोहराने के लिए अन्य प्लगइन से ior (जहां विकल्प भी दिखाई नहीं देते हैं)
इस काम का सही उदाहरण के रूप में, एक प्रश्न का स्टैक ओवरफ्लो टैग अनुभाग भी सही काम करता है। अगर मैं इस प्रश्न के लिए टैग की मेरी सूची में "jquery" जोड़ता हूं और फिर "jquery" की खोज करता हूं, तो यह DOESN "टी दिखाता है कि सूची में (जैसा कि इसे पहले से चुना गया है)। यही वह व्यवहार है जिसे मैं देख रहा हूं के लिए
यहाँ है मेरे वर्तमान Select2 कोड:।
एचटीएमएल:
<select id="Tags" name="Tags" multiple="multiple">
</select>
जावास्क्रिप्ट:
function SetupAppTags() {
$("#Tags").select2({
theme: "classic",
width: "98%",
tags: true,
ajax: {
url: "/Tag/Search",
dataType: 'json',
delay: 300,
data: function(params) {
return { q: params.term };
},
processResults: function(data, params) {
return { results: data };
},
cache: false
},
escapeMarkup: function(markup) { return markup; },
minimumInputLength: 3,
templateResult: tagFormatResult,
templateSelection: tagSelectionResult
});
}
function tagFormatResult(tag) {
if (tag.loading) {
return "Loading . . .";
} else {
if (tag.name) {
return tag.name;
}
return tag.text + " [NEW]";
}
}
function tagSelectionResult(tag) {
if (tag.name) {
return tag.name;
}
return tag.text;
}
मुझे लगता है कि किसी भी तरह टेम्पलेट में रीसेट फ़ंक्शन झूठी वापसी करने का कोई तरीका है या कुछ आइटम उस शो को दिखाने के लिए नहीं है यदि यह पहले से ही चुना गया है। संभव कुछ इस तरह (कुछ भी नहीं मिल सकता है ऑनलाइन या डॉक्स में) है
क्या आप जानते हैं कि क्या टेम्पलेट में निरर्थक वापसी के विपरीत कस्टम मैचर बनाम अंतर के बीच अंतर? – leora
@ स्लोरा मैंने दस्तावेज़ों को देखा और कुछ डीबगिंग किया, दोनों व्यवहार्य विकल्प हैं क्योंकि वे कुछ हद तक डुप्लिकेट कार्यक्षमता प्रदान करते हैं। दस्तावेज़ों से: _ "[चयन 2] 'matcher' का उपयोग यह निर्धारित करने के लिए करता है कि [प्रत्येक परिणाम] प्रदर्शित होना चाहिए।" _ _ "' TemplateResult' भी' शून्य 'वापस कर सकता है, जो विकल्प को प्रदर्शित होने से रोक देगा परिणाम सूची। "_ ताकि आप देख सकें, वे उपयोगकर्ता को विभिन्न मार्गों के माध्यम से एक ही चीज़ करने की अनुमति देते हैं। पुस्तकालय इस तरह डिज़ाइन क्यों किया गया था, यह स्पष्ट नहीं है, लेकिन यदि आप केवल एक या दूसरे को मामूली विवरण में बदलना चाहते हैं तो इसका कारण शायद उपयोग में आसान है। – Nit
अनुवर्ती के लिए धन्यवाद – leora