私は素晴らしいselect2を使用して、複数選択コンボを作成しています。
(ユーザーが以前に行った選択のように) プログラムで既定値を選択したいのですが、その方法がわかりません。initSelection を使用するとうまくいくと読んだことがありますが、これはコンボを作成するときに呼び出され、このデフォルトの選択を常に実行したくありません。
私は素晴らしいselect2を使用して、複数選択コンボを作成しています。
(ユーザーが以前に行った選択のように) プログラムで既定値を選択したいのですが、その方法がわかりません。initSelection を使用するとうまくいくと読んだことがありますが、これはコンボを作成するときに呼び出され、このデフォルトの選択を常に実行したくありません。
私はいくつかの解決策を見つけました。おそらくそれがあなたを助けるでしょう:
$('#el').select2({...}) // init select2
var defaultData = [{id:1, text:'Item1'},{id:2,text:'Item2'},{id:3,text:'Item3'}];
$('#el').data().select2.updateSelection(defaultData);
$('#el').select2().val(['val1','val2']).trigger("change")
トリックはしますが、何らかの理由で独自のタグを追加する機能が削除されます...
次のコードは問題なく動作しますが、select2
更新する必要があります
$('#el').data().select2.updateSelection(defaultData);
値の配列をループしてから、一致する各オプションを ("selected",true) に設定します
values = [2, 5, 3]
for val in values
$("#selects_id option[value="+val+"]").prop("selected",true).trigger("change")
Ajax 呼び出しから取得した結果を処理することもできます。
やっとわかった!!Select2 は、 の<option>
下のタグを反復処理し<select>
ます。
<select class="js-data-example-ajax" style="width:100%">
<option value="3620194" selected="selected">Put the pre-selected options here</option>
</select>
の内部 html は<option>
、テキスト キーの下の repo オブジェクトに配置されます。したがってrepo.text
、innerhtmlが提供されます。つまり、initrepo.text
でformatSelection
オプションを指定するだけです。また、サーブレット (コントローラー) から渡される json には、目的のラベル テキストがtext
キーの下に配置されている必要があります!! 変更されたリストを保存できるように、作成された li 要素に属性を追加する方法をまだ考えています。何か案は?
ここでは、 JQuery Select2 を使用したオートコンプリートの複数選択ドロップダウン リストで解決策を見つけることができます。
データを HTML の「select」要素にバインドし、それを「Select2」関数によって引き継いで、美しい複数選択ドロップダウン リストに変換します。
AJax を使用すると適切に動作する可能性があり、今後数日中に試してみることになります。