0
次のコードを使用して、select2(バージョン2.5.3)ウィジェットにデータを動的に読み込みます。フォーカスとアイドル中にselect2の内容を更新する
var arr = [];
$.ajax(...); // Load data into the array
hiddenInput.select2({
data: { results: arr }
});
私はウィジェットの検索フィールドに集中していた場合ならば、新しいデータのみが現れる:私は離れてクリックして、再度
- 私はフィールドに入力を開始
hiddenInput.val()
を呼び出す
は何もしない、とhiddenInput.change()
またはhiddenInput.trigger('change.select2')
を呼び出すと、ドロップダウンを閉じて、任意の入力したテキストを取り除きます。
ユーザーが何もしなくても、ウィジェットの状態をリセットしなくてもデータを更新できるようにするにはどうすればいいですか(たとえば、検索フィールドを閉じたり消去したりしないでください。
正確に達成しようとしていることはありますか?なぜあなたはこれをする必要がありますか?ユーザーがフォーカスしている間にデータが変更されるのはなぜですか? – Miro
@Miro ajax呼び出しを使用してデータをロードしています。このロードには2〜2秒かかります。この間、「一致するものは見つかりませんでした」というテキストは「読み込み中」と表示されます。ユーザーは、ロードが完了する前に検索ボックスにアクセスし、できるだけ早く検索を開始できるようにします。検索フィールドをクリックしても何も入力しないと、データが既に読み込まれているにもかかわらず、結果ボックスには「読み込み中」と表示され続けます。私はselect2ウィジェットがこれを認識し、それに応じてディスプレイを更新したい。 – idlackage
はい。私はそれを得る。しかし、なぜユーザーが集中した後にデータをロードしなければならないのですか?そうすれば、ユーザーがフォーカスしている間は更新する必要はありません。例:https://jsfiddle.net/mirohristov/h2trn161/2/ – Miro