121

Select2 を使用しようとすると、複数項目の入力/テキスト フィールドでこのエラーが発生します。

"query function not defined for Select2 undefined error"
4

13 に答える 13

245

この Google グループ スレッドで取り上げられています

問題は、select2 によって追加された余分な div が原因でした。Select2 は、作成された選択をラップするために、クラス「select2-container form-select」で新しい div を追加しました。そのため、次に関数をロードしたときに、select2 が div 要素にアタッチされていたため、エラーがスローされていました。セレクターを変えた...

特定のタグ名「select」を使用して select2 css 識別子をプレフィックスします。

$('select.form-select').select2();
于 2013-01-23T15:36:25.123 に答える
19

このエラー メッセージは一般的すぎます。select2()他の考えられる原因の 1 つは、既に「select2ed」入力でメソッドを呼び出そうとしていることです。

于 2014-12-01T12:50:04.487 に答える
11

また、select2を2回初期化しないように、この問題が発生しました。

于 2015-09-22T12:13:03.597 に答える
7

私にとって、この問題は、正しい data-ui-select2 属性を設定することに要約されました。

<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と、このエラーが発生します。

于 2014-01-15T16:53:44.787 に答える
4

テキストボックスでajaxを使用すると同じエラーが発生し、テキストボックスのクラスselect2を削除し、次のようなidでselect2をセットアップすることで解決します。

$(function(){
  $("#input-select2").select2();
});
于 2014-09-19T12:32:18.743 に答える
2

ajax を使用した場合にも同じエラーが発生しました。

ajax を使用して select2 でフォームをレンダリングする場合、input_html クラスは、ajax を使用してレンダリングされていないクラスとは異なる必要があります。ただし、なぜこのように機能するのかはよくわかりません。

于 2014-02-22T10:49:46.650 に答える
1
if (typeof(opts.query) !== "function") {
    throw "query function not defined for Select2 " + opts.element.attr("id");
}

これは、クエリがオプションに存在しないためにスローされます。内部的には、パラメーターに対して次のいずれかを必要とするチェックが維持されています。

  • アヤックス
  • タグ
  • データ
  • クエリ

したがって、これら 4 つのオプションのいずれかを select2 に指定するだけで、期待どおりに動作するはずです。

于 2017-03-22T09:47:39.443 に答える
0

同じエラーが発生しました。私はselect2-3.5.2を使用しています

これはエラーのある私のコードでした

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

以下のコードで問題が修正されました。

    $('#carstatus-select').val([1,2]);
于 2016-10-13T16:16:43.063 に答える
0

複雑な Web アプリを使用していますが、このエラーがスローされた理由を正確に理解できませんでした。スローされたときに JavaScript が中止される原因となっていました。

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"));
        }

これですべてが正常に動作しているように見えますが、コード内でエラーの原因を正確に突き止めたい場合に備えて、まだエラーが発生しています。しかし、今のところ、これは私にとって十分な修正です。

于 2017-01-19T04:39:21.957 に答える