我正在使用真棒select2來創建多選組合。select2:使用AJAX進行多選的默認選擇
我想以編程方式選擇默認值(如在用戶之前所做的選擇),但我不知道如何。我讀過使用initSelection做的竅門,但是在創建組合時調用這個技巧,並且我不希望總是完成這個默認選擇。
我正在使用真棒select2來創建多選組合。select2:使用AJAX進行多選的默認選擇
我想以編程方式選擇默認值(如在用戶之前所做的選擇),但我不知道如何。我讀過使用initSelection做的竅門,但是在創建組合時調用這個技巧,並且我不希望總是完成這個默認選擇。
從文檔頁面:
「VAL - 獲取或設置選擇如果未指定值參數,則返回當前所選元素的id屬性如果值參數中指定它。將成爲目前的選擇。「
此外,從文檔:
$("#e8").select2("val", "CA");
這不起作用。由於數據是通過AJAX動態加載的,因此當您設置val屬性時,根本沒有元素加載到控件 – 2013-04-22 09:00:54
完成ajax調用並且已將數據設置到選擇框後,THEN從ajax調用成功處理程序中,你可以調用上面的答案中提到的代碼?那就是如果你正在使用你自己的Ajax調用。但是如果你使用組件提供的Ajax調用,我不知道 - 它不提供完成鉤子事件 - 所以你不妨寫自己的(10行也許?)。 – 2013-04-22 09:05:50
這是行不通的,因爲我的AJAX調用是基於用戶在輸入中鍵入的搜索詞(所以它不會加載整個元素集)。另外,我不希望我的選擇在任何時候都顯示出來;我希望能夠關閉它。 – 2013-04-22 09:19:23
我找到了一些解決方案,也許這將幫助你:
$('#el').select2({...}) // init select2
var defaultData = [{id:1, text:'Item1'},{id:2,text:'Item2'},{id:3,text:'Item3'}];
$('#el').data().select2.updateSelection(defaultData);
上面的這段代碼對我來說可行,但在排除故障時遇到了一些問題。對於我的生活無法找到.updateSelection()文件。在預加載數據時,我也會在輸入時出現奇怪的換行符。發現了一些對我更好的新代碼。 '$('#input')。select2('data',preload_data);'preload_data是對象 – 2014-01-22 08:56:36
你可以找到一個解決方案在這裏與使用JQuery選擇二的自動完成,multiple selection Drop-down list 。
使用HTML「select」元素綁定數據,然後由「Select2」函數接管數據,將其轉換爲漂亮的多選下拉列表。
它可能使用AJAX表現良好,並且一定會在未來幾天嘗試。
下面的代碼工作正常,但select2
需要刷新
$('#el').data().select2.updateSelection(defaultData);
如文檔here中列出,你可以簡單地添加「選項」你的選擇標記有預選的初始默認值。
<select class="js-data-example-ajax">
<option value="3620194" selected="selected">select2/select2</option>
</select>
$('#el').select2().val(['val1','val2']).trigger("change")
的伎倆,但由於某種原因,刪除,添加自己的標籤要延長@sanj答案的能力...
。 這似乎在我的項目中爲我工作。
通過HTML
HTML
<select class="select2" style='width:100%;' multiple>
<option val=''>Please choose</option>
<option val="1" selected>One</option>
<option val="2" selected>Two</option>
<option val="3">Three</option>
</select>
JS
$('.select2').select2();
通過JavaScript
HTML
<select class="select2" style='width:100%;' multiple>
<option val=''>Please choose</option>
<option val="1">One</option>
<option val="2">Two</option>
<option val="3">Three</option>
</select>
JS
$('.select2').select2();
var defaultData = [{id:1, text:'One'},{id:2,text:'Two'}];
$('.select2').data().select2.updateSelection(defaultData);
終於想出來了!! Select2遍歷<select>
下的<option>
標記。
<select class="js-data-example-ajax" style="width:100%">
<option value="3620194" selected="selected">Put the pre-selected options here</option>
</select>
的<option>
的內部HTML的文本項下投入回購對象。所以repo.text
會給innerhtml。也就是說,我們所要做的就是將repo.text
提供給init中的formatSelection
選項。另外,從servlet(控制器)傳遞的json應該將所需的標籤文本置於text
鍵之下! 還在搞清楚如何向創建的li元素添加屬性,以便我可以保存更改的列表。 任何想法?
我通過數值數組循環,然後設置匹配的每個選項(「選擇」,真)
values = [2, 5, 3]
for val in values
$("#selects_id option[value="+val+"]").prop("selected",true).trigger("change")
你也可以做你從一個Ajax調用得到的結果。
您是否找到答案? – 2017-05-26 08:29:57