"সিলেক্ট 2 অপরিবর্তিত ত্রুটির জন্য ক্যোয়ারী ফাংশন সংজ্ঞায়িত করা হয়নি"


উত্তর:


241

এই গুগল গ্রুপ থ্রেডে আচ্ছাদিত

সমস্যাটি কারণ অতিরিক্ত ডিভ যা সিলেক্ট 2 দ্বারা যুক্ত করা হয়েছিল। সিলেক্ট 2 ক্লাবটি "সিলেক্ট-কনটেইনার ফর্ম-সিলেক্ট" সহ নতুন ডিভ যুক্ত করেছে যা নির্বাচিত নির্বাচনকে মোড়ানোর জন্য। পরের বার আমি ফাংশনটি লোড করার সময়, সিলেক্ট 2 ডিভ উপাদানটির সাথে সংযুক্ত হওয়ায় ত্রুটিটি নিক্ষেপ করা হচ্ছে। আমি আমার নির্বাচক পরিবর্তন করেছি ...

নির্দিষ্ট ট্যাগ নাম "নির্বাচন করুন" সহ উপসর্গের সিলেক্ট্র সিএসএস শনাক্তকারী:

$('select.form-select').select2();

কোনওরকমভাবে এটি আমার জন্য স্থির করে দেওয়া হয়েছিল, আমার ক্ষেত্রে আমি ফর্ম ইনপুটগুলির একটি সারি ক্লোনিং করছিলাম যাতে সিলেক্ট 2-আইয়েড নির্বাচিত মেনুগুলি অন্তর্ভুক্ত ছিল এবং সব ধরণের বিচিত্র জিনিস প্রথম ক্লোনটির পরে ঘটছিল।
martincarlin87

ভিতরে থাকতে হবে$(document).ready(function() { $('select.form-select').select2()})
টেড

1
কৌনিক ইউআই সিলেক্ট 2 নির্দেশিকায় একই সমস্যাটি কীভাবে সমাধান করা যায়?
zavidovych

এই একই সমস্যাটি আজই এসেছিল - যদিও একই কোডটিতে আগে কোনও সমস্যা ছিল না (সম্ভবত নির্বাচন 2 এর একটি আপডেট?)। যাইহোক, এটি আমার পক্ষে এটি সমাধান করেছে এবং আবারও ঠিকঠাক কাজ করছে। দুর্দান্ত উত্তর!
ব্যবহারকারী 756659

10
এই সমস্যাটি সাধারণত ঘটে যদি সিলেক্ট কন্ট্রোলটি ইতিমধ্যে .select2({})পদ্ধতি দ্বারা শুরু করা হয়েছে । আরও ভাল সমাধান হ'ল প্রথমে ধ্বংস পদ্ধতি কল করা। উদা:$("#mySelectControl").select2("destroy").select2({});
দিমিত্রি এস।

18

এই ত্রুটি বার্তাটি খুব সাধারণ। এর অন্য সম্ভাব্য উত্সগুলির মধ্যে একটি হ'ল আপনি select2()ইতিমধ্যে "নির্বাচিত" ইনপুটটিতে পদ্ধতিটি কল করার চেষ্টা করছেন ।


13

আপনি খালি ইনপুটটি আরম্ভ করার ক্ষেত্রে এটি করুন:

$(".yourelement").select2({
 data: {
  id: "",
  text: ""
 }
});

নীচের প্রথম মন্তব্যটি পড়ুন, এটি কেন এবং কখন আমার উত্তরে কোডটি ব্যবহার করা উচিত তা ব্যাখ্যা করে।


2
আমার পরে এই সমস্যাটি ছিল যখন আমি একটি নির্বাচিত 2 বাক্সকে আসল নির্বাচনের উপাদান থেকে ইনপুট টাইপ = লুকানো উপাদানটিতে স্থানান্তরিত করেছিলাম যা আমি পরে পপুলেশন করছিলাম। Select2 কোড মাধ্যমে পদবিন্যাস, এই ত্রুটি না থাকায় পাস কোন ক্যোয়ারী, Ajax, তথ্য, বা ট্যাগ মান ফেলে দেওয়া হয়।
ড্যানিয়েল

1
এটি এই প্রশ্নের গ্রহণযোগ্য উত্তর হওয়া উচিত। নিশ্চিত নয় কেন select2()কেবল খালি প্যারামিটারগুলি গ্রহণ করবেন না
সোদেব

11

আমারও এই সমস্যাটি নিশ্চিত হয়েছিল যে আপনি নির্বাচনের 2 টি আরম্ভ করবেন না।


আমার জন্য একই, তবে ত্রুটিটি আমার পক্ষে সমস্যা ছিল না। s2 যাইহোক কাজ করে
পুনরায় রাজত্ব করুন .85

কিভাবে এই কাজ করতে?
খালেদ সালেহ

7

আমার জন্য এই সমস্যাটি সঠিক ডেটা-ইউআই-সিলেক্ট 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আমি এই ত্রুটিটি পাই।


5

এই সমস্যাটি আমি কীভাবে আমার সিলেক্ট 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...'
  });
});

এই ইস্যুটি একটি রেল অ্যাপ্লিকেশনের অভ্যন্তরে পুষে


4

টেক্সটবক্সের সাথে এজাক্স ব্যবহার করার সময় আমিও একই ত্রুটি পেয়েছি তখন আমি পাঠ্যবক্সের ক্লাস সিলেক্ট 2 এবং আইডির মাধ্যমে সিলেক্ট 2 সেটআপ করে এটি সমাধান করি :

$(function(){
  $("#input-select2").select2();
});

3

দেখে মনে হচ্ছে যে আপনার নির্বাচক কোনও অপরিবর্তিত উপাদান ফেরত দিয়েছেন (সুতরাং undefined errorফিরে এসেছে)

যদি উপাদানটি সত্যই বিদ্যমান থাকে তবে আপনি সিলেক্ট 2-তে কোনও inputকিছু সরবরাহ না করেই কোনও উপাদানকে সিলেক্ট 2 কল করছেন, যেখানে এটি থেকে ডেটা আনতে হবে। সাধারণত, একটি কল .select2({data: [{id:"firstid", text:"firsttext"}])


2

এজ্যাক্স ব্যবহার করার সময় একই ত্রুটি পেয়েছিল।

আপনি যদি সিলেক্ট 2 দিয়ে ফর্ম রেন্ডার করতে এজ্যাক্স ব্যবহার করছেন তবে ইনপুট_এইচটিএমএল ক্লাসটি অবশ্যই এজ্যাক্সের সাহায্যে রেন্ডার করা নয় from যদিও এটি এইভাবে কাজ করে তা পুরোপুরি নিশ্চিত নয়।


আপনার অর্থ, "<ইনপুট টাইপ = 'লুকানো' শ্রেণি = 'ফু' ...." যেখানে আপনার একাধিক সিলেক্ট 2 রয়েছে, সেগুলি সব 'ফু' হতে পারে না? এটি আমার পক্ষে কাজ করে না।
dethSwatch

1
if (typeof(opts.query) !== "function") {
    throw "query function not defined for Select2 " + opts.element.attr("id");
}

এটি নিক্ষেপ করা হয়েছে বিকাশ ক্যোয়ারী বিকল্পগুলিতে বিদ্যমান নেই। অভ্যন্তরীণভাবে একটি চেক রক্ষণাবেক্ষণ করা হচ্ছে যার জন্য প্যারামিটারগুলির জন্য নিম্নলিখিতগুলির কোনও প্রয়োজন

  • Ajax
  • ট্যাগ
  • উপাত্ত
  • প্রশ্ন

সুতরাং আপনার কেবলমাত্র সিলেক্ট 2 এর জন্য এই 4 টি বিকল্পগুলির মধ্যে একটি সরবরাহ করতে হবে এবং এটি প্রত্যাশার মতো কাজ করা উচিত।


0

আমি একই ত্রুটি পেয়েছি। আমি সিলেক্ট ২-৩.৫.২ ব্যবহার করছি

এটি আমার কোড যা ত্রুটি ছিল

    $('#carstatus-select').select2().val([1,2])

কোডের নীচে সমস্যাটি স্থির করা হয়েছে।

    $('#carstatus-select').val([1,2]);

আমি $ ('# ক্রাস্ট্যাটাস সিলেক্ট') ব্যবহার করব select সিলেক্ট 2 ("ভাল", [1,2]);
ডক্সে

0

আমার একটি জটিল ওয়েব অ্যাপ রয়েছে এবং আমি বুঝতে পারি না কেন এই ত্রুটিটি ফেলে দেওয়া হচ্ছে 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"));
        }

এখন সবকিছু ঠিকঠাকভাবে কাজ করছে বলে মনে হচ্ছে তবে আমি চেষ্টা করতে চাইলে আমার কোডটিতে ঠিক কীটি ত্রুটি ঘটছে তা নির্ধারণ করতে চাইলে এটি ত্রুটিতে লগইন করছে। তবে আপাতত এটি আমার পক্ষে যথেষ্ট ভাল।


-2

ব্যবহার:

try {
    $("#input-select2").select2();
}
catch(err) {

}

এটি কেবল ত্রুটিটি আড়াল করবে, এটি ঠিক করবে না। সংখ্যাগরিষ্ঠ ক্ষেত্রে এটি কোনও সমাধান নয়
রামসেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.