Select2 का उपयोग करने की कोशिश कर रहा है और कई आइटम इनपुट / टेक्स्ट फ़ील्ड पर यह त्रुटि प्राप्त कर रहा है:
"query function not defined for Select2 undefined error"
Select2 का उपयोग करने की कोशिश कर रहा है और कई आइटम इनपुट / टेक्स्ट फ़ील्ड पर यह त्रुटि प्राप्त कर रहा है:
"query function not defined for Select2 undefined error"
जवाबों:
इस Google समूह थ्रेड में शामिल किया गया है
समस्या अतिरिक्त div की वजह से थी जो कि चयन 2 द्वारा जोड़ी जा रही थी। Select2 ने वर्ग "select2-container form-select" के साथ नया div जोड़ा था जो चुने गए को लपेटने के लिए था। इसलिए अगली बार जब मैंने फ़ंक्शन लोड किया, तो त्रुटि को फेंक दिया जा रहा था क्योंकि select2 को div एलिमेंट से अटैच किया जा रहा था। मैंने अपना चयनकर्ता बदल लिया ...
विशिष्ट टैग नाम "चयन" के साथ उपसर्ग select2 css पहचानकर्ता:
$('select.form-select').select2();
$(document).ready(function() { $('select.form-select').select2()})
.select2({})
विधि द्वारा प्रारंभ किया गया है। एक बेहतर समाधान पहले विध्वंस विधि को कॉल करना होगा। Ex:$("#mySelectControl").select2("destroy").select2({});
यह त्रुटि संदेश बहुत सामान्य है। इसके अन्य संभावित स्रोतों में से एक यह है कि आप select2()
पहले से ही "select2ed" इनपुट पर कॉल करने की कोशिश कर रहे हैं ।
मामले में आप एक खाली इनपुट इनिशियलाइज़ करते हैं:
$(".yourelement").select2({
data: {
id: "",
text: ""
}
});
नीचे पहली टिप्पणी पढ़ें, यह बताता है कि आपको मेरे उत्तर में कोड का उपयोग क्यों और कब करना चाहिए।
select2()
सिर्फ खाली मापदंडों को क्यों स्वीकार नहीं किया जाएगा
मुझे भी यह समस्या थी कि आप दो बार select2 को इनिशियलाइज़ न करें।
मेरे लिए यह समस्या सही डेटा-यूआई-चयन 2 विशेषता सेट करने के लिए उबला हुआ है:
<input type="text" data-ui-select2="select2Options.projectManagers" placeholder="Project Manager" ng-model="selectedProjectManager">
$scope.projectManagers = {
data: [] //Must have data property
}
$scope.selectedProjectManager = {};
यदि मैं इस त्रुटि को प्राप्त करने data
पर संपत्ति को हटा देता $scope.projectManagers
हूं।
यह समस्या उबली हुई थी कि मैं अपने चयन 2 चयन बॉक्स का निर्माण कैसे कर रहा था। एक जावास्क्रिप्ट फ़ाइल में मैं था ...
$(function(){
$(".select2").select2();
});
और एक अन्य जेएस में एक ओवरराइड फ़ाइल ...
$(function(){
var employerStateSelector =
$("#registration_employer_state").select2("destroy");
employerStateSelector.select2({
placeholder: 'Select a State...'
});
});
विंडो लोड ईवेंट में दूसरा ओवरराइड ले जाने से समस्या हल हो गई।
$( window ).load(function() {
var employerStateSelector =
$("#registration_employer_state").select2("destroy");
employerStateSelector.select2({
placeholder: 'Select a State...'
});
});
यह समस्या एक रेल अनुप्रयोग के अंदर खिल गई
मैं भी एक ही त्रुटि जब एक पाठ बॉक्स के साथ ajax का उपयोग कर रहा हूँ तो मैं इसे textbox के वर्ग select2 को हटाने और आईडी द्वारा select2 सेटअप की तरह से हल:
$(function(){
$("#input-select2").select2();
});
ऐसा लगता है कि आपका चयनकर्ता एक अपरिभाषित तत्व लौटाता है (इसलिए undefined error
वापस आ गया है)
यदि तत्व वास्तव में मौजूद है, तो आप select2 को input
कुछ भी आपूर्ति किए बिना एक तत्व पर select2 को कॉल कर रहे हैं , जहां से डेटा प्राप्त करना चाहिए। आमतौर पर, एक कॉल .select2({data: [{id:"firstid", text:"firsttext"}])
।
Ajax का उपयोग करते समय भी वही त्रुटि मिली।
यदि आप ajax को select2 के साथ फ़ॉर्म रेंडर करने के लिए उपयोग कर रहे हैं, तो input_html वर्ग उन लोगों से अलग होना चाहिए जो ajax का उपयोग करके प्रदान नहीं किए गए हैं। हालांकि यह इस तरह से काम करता है क्यों नहीं काफी यकीन है।
if (typeof(opts.query) !== "function") {
throw "query function not defined for Select2 " + opts.element.attr("id");
}
यह फेंक दिया जाता है becase क्वेरी विकल्पों में मौजूद नहीं है। आंतरिक रूप से एक चेक बनाए रखा जाता है, जिसमें पैरामीटर के लिए निम्नलिखित में से किसी एक की आवश्यकता होती है
इसलिए आपको बस इन 4 विकल्पों में से एक को select2 में उपलब्ध कराने की आवश्यकता है और यह अपेक्षित रूप से काम करना चाहिए।
मुझे भी यही त्रुटि मिली। मैं select2-3.5.2 का उपयोग कर रहा हूं
यह मेरा कोड था जिसमें त्रुटि थी
$('#carstatus-select').select2().val([1,2])
नीचे दिए गए कोड ने मुद्दा तय किया।
$('#carstatus-select').val([1,2]);
मेरे पास एक जटिल वेब ऐप है और मैं यह पता नहीं लगा सका कि यह त्रुटि क्यों डाली जा रही है। यह जावास्क्रिप्ट को फेंकने पर गर्भपात का कारण बन रहा था।
Select2.js में मैं बदल गया:
if (typeof(opts.query) !== "function") {
throw "query function not defined for Select2 " + opts.element.attr("id");
}
सेवा:
if (typeof(opts.query) !== "function") {
console.error("query function not defined for Select2 " + opts.element.attr("id"));
}
अब सब कुछ ठीक से काम करने लगता है, लेकिन मैं अभी भी त्रुटि के मामले में लॉग इन कर रहा हूं और मैं यह जानना चाहता हूं कि मेरे कोड में वास्तव में क्या त्रुटि है। लेकिन अभी के लिए यह मेरे लिए काफी अच्छा फिक्स है।
उपयोग :
try {
$("#input-select2").select2();
}
catch(err) {
}