Select2 を使用しようとすると、複数項目の入力/テキスト フィールドでこのエラーが発生します。
"query function not defined for Select2 undefined error"
Select2 を使用しようとすると、複数項目の入力/テキスト フィールドでこのエラーが発生します。
"query function not defined for Select2 undefined error"
この Google グループ スレッドで取り上げられています
問題は、select2 によって追加された余分な div が原因でした。Select2 は、作成された選択をラップするために、クラス「select2-container form-select」で新しい div を追加しました。そのため、次に関数をロードしたときに、select2 が div 要素にアタッチされていたため、エラーがスローされていました。セレクターを変えた...
特定のタグ名「select」を使用して select2 css 識別子をプレフィックスします。
$('select.form-select').select2();
このエラー メッセージは一般的すぎます。select2()
他の考えられる原因の 1 つは、既に「select2ed」入力でメソッドを呼び出そうとしていることです。
また、select2を2回初期化しないように、この問題が発生しました。
私にとって、この問題は、正しい 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
と、このエラーが発生します。
テキストボックスでajaxを使用すると同じエラーが発生し、テキストボックスのクラスselect2を削除し、次のようなidでselect2をセットアップすることで解決します。
$(function(){
$("#input-select2").select2();
});
ajax を使用した場合にも同じエラーが発生しました。
ajax を使用して select2 でフォームをレンダリングする場合、input_html クラスは、ajax を使用してレンダリングされていないクラスとは異なる必要があります。ただし、なぜこのように機能するのかはよくわかりません。
if (typeof(opts.query) !== "function") {
throw "query function not defined for Select2 " + opts.element.attr("id");
}
これは、クエリがオプションに存在しないためにスローされます。内部的には、パラメーターに対して次のいずれかを必要とするチェックが維持されています。
したがって、これら 4 つのオプションのいずれかを select2 に指定するだけで、期待どおりに動作するはずです。
同じエラーが発生しました。私はselect2-3.5.2を使用しています
これはエラーのある私のコードでした
$('#carstatus-select').select2().val([1,2])
以下のコードで問題が修正されました。
$('#carstatus-select').val([1,2]);
複雑な 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"));
}
これですべてが正常に動作しているように見えますが、コード内でエラーの原因を正確に突き止めたい場合に備えて、まだエラーが発生しています。しかし、今のところ、これは私にとって十分な修正です。