নির্বাচন 2 ব্যবহার করার চেষ্টা করা এবং একাধিক আইটেম ইনপুট / পাঠ্য ক্ষেত্রে এই ত্রুটিটি পাওয়া:
"query function not defined for Select2 undefined error"
নির্বাচন 2 ব্যবহার করার চেষ্টা করা এবং একাধিক আইটেম ইনপুট / পাঠ্য ক্ষেত্রে এই ত্রুটিটি পাওয়া:
"query function not defined for Select2 undefined error"
উত্তর:
সমস্যাটি কারণ অতিরিক্ত ডিভ যা সিলেক্ট 2 দ্বারা যুক্ত করা হয়েছিল। সিলেক্ট 2 ক্লাবটি "সিলেক্ট-কনটেইনার ফর্ম-সিলেক্ট" সহ নতুন ডিভ যুক্ত করেছে যা নির্বাচিত নির্বাচনকে মোড়ানোর জন্য। পরের বার আমি ফাংশনটি লোড করার সময়, সিলেক্ট 2 ডিভ উপাদানটির সাথে সংযুক্ত হওয়ায় ত্রুটিটি নিক্ষেপ করা হচ্ছে। আমি আমার নির্বাচক পরিবর্তন করেছি ...
নির্দিষ্ট ট্যাগ নাম "নির্বাচন করুন" সহ উপসর্গের সিলেক্ট্র সিএসএস শনাক্তকারী:
$('select.form-select').select2();
$(document).ready(function() { $('select.form-select').select2()})
.select2({})
পদ্ধতি দ্বারা শুরু করা হয়েছে । আরও ভাল সমাধান হ'ল প্রথমে ধ্বংস পদ্ধতি কল করা। উদা:$("#mySelectControl").select2("destroy").select2({});
এই ত্রুটি বার্তাটি খুব সাধারণ। এর অন্য সম্ভাব্য উত্সগুলির মধ্যে একটি হ'ল আপনি select2()
ইতিমধ্যে "নির্বাচিত" ইনপুটটিতে পদ্ধতিটি কল করার চেষ্টা করছেন ।
আপনি খালি ইনপুটটি আরম্ভ করার ক্ষেত্রে এটি করুন:
$(".yourelement").select2({
data: {
id: "",
text: ""
}
});
নীচের প্রথম মন্তব্যটি পড়ুন, এটি কেন এবং কখন আমার উত্তরে কোডটি ব্যবহার করা উচিত তা ব্যাখ্যা করে।
select2()
কেবল খালি প্যারামিটারগুলি গ্রহণ করবেন না
আমারও এই সমস্যাটি নিশ্চিত হয়েছিল যে আপনি নির্বাচনের 2 টি আরম্ভ করবেন না।
আমার জন্য এই সমস্যাটি সঠিক ডেটা-ইউআই-সিলেক্ট 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...'
});
});
এই ইস্যুটি একটি রেল অ্যাপ্লিকেশনের অভ্যন্তরে পুষে
টেক্সটবক্সের সাথে এজাক্স ব্যবহার করার সময় আমিও একই ত্রুটি পেয়েছি তখন আমি পাঠ্যবক্সের ক্লাস সিলেক্ট 2 এবং আইডির মাধ্যমে সিলেক্ট 2 সেটআপ করে এটি সমাধান করি :
$(function(){
$("#input-select2").select2();
});
দেখে মনে হচ্ছে যে আপনার নির্বাচক কোনও অপরিবর্তিত উপাদান ফেরত দিয়েছেন (সুতরাং undefined error
ফিরে এসেছে)
যদি উপাদানটি সত্যই বিদ্যমান থাকে তবে আপনি সিলেক্ট 2-তে কোনও input
কিছু সরবরাহ না করেই কোনও উপাদানকে সিলেক্ট 2 কল করছেন, যেখানে এটি থেকে ডেটা আনতে হবে। সাধারণত, একটি কল .select2({data: [{id:"firstid", text:"firsttext"}])
।
এজ্যাক্স ব্যবহার করার সময় একই ত্রুটি পেয়েছিল।
আপনি যদি সিলেক্ট 2 দিয়ে ফর্ম রেন্ডার করতে এজ্যাক্স ব্যবহার করছেন তবে ইনপুট_এইচটিএমএল ক্লাসটি অবশ্যই এজ্যাক্সের সাহায্যে রেন্ডার করা নয় from যদিও এটি এইভাবে কাজ করে তা পুরোপুরি নিশ্চিত নয়।
if (typeof(opts.query) !== "function") {
throw "query function not defined for Select2 " + opts.element.attr("id");
}
এটি নিক্ষেপ করা হয়েছে বিকাশ ক্যোয়ারী বিকল্পগুলিতে বিদ্যমান নেই। অভ্যন্তরীণভাবে একটি চেক রক্ষণাবেক্ষণ করা হচ্ছে যার জন্য প্যারামিটারগুলির জন্য নিম্নলিখিতগুলির কোনও প্রয়োজন
সুতরাং আপনার কেবলমাত্র সিলেক্ট 2 এর জন্য এই 4 টি বিকল্পগুলির মধ্যে একটি সরবরাহ করতে হবে এবং এটি প্রত্যাশার মতো কাজ করা উচিত।
আমি একই ত্রুটি পেয়েছি। আমি সিলেক্ট ২-৩.৫.২ ব্যবহার করছি
এটি আমার কোড যা ত্রুটি ছিল
$('#carstatus-select').select2().val([1,2])
কোডের নীচে সমস্যাটি স্থির করা হয়েছে।
$('#carstatus-select').val([1,2]);
আমার একটি জটিল ওয়েব অ্যাপ রয়েছে এবং আমি বুঝতে পারি না কেন এই ত্রুটিটি ফেলে দেওয়া হচ্ছে thrown এটি নিক্ষেপ করার সময় জাভাস্ক্রিপ্ট বাতিল করতে বাধ্য করছিল।
সিলেক্টে.জেজেজে আমি পরিবর্তন করেছি:
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) {
}