2014-09-13 70 views
0

Im使用由ivaynberg提供的select2,並且在提交時如何返回數據存在問題。select2(js)表單元素的表單結果的簡單排序?

有沒有什麼辦法讓表單中的結果按照select2元素中選擇的順序提交數據,而不使用可排序的拖放解決方案? 可以說,有三種選擇:

<option name=red value=red>red</option> 
<option name=blue value=blue>blue</option> 
<option name=green value=green>green</option> 

和在多SELECT2元件,選擇由作爲綠色然後紅色(在所呈現的元素,綠色坐在紅前)。在提交表單時,數組會返回:

[select2] => Array 
(
    [0] => red 
    [1] => green 
) 

按照它們出現在最初的html數據中的順序。 但我想記錄,其中用戶通過這樣的選擇順序輸出提交數據選擇這些值的順序:

[select2] => Array 
(
    [0] => green 
    [1] => red 
) 

在選擇2的任何開關或選項,我可以用它來做到這一點? (有點JS新手,所以我不明白這個真棒函數提供的所有文檔)。

回答

0

我得到了一個很好的代碼片段從jdecuyper貼在我的選擇2 GitHub的問題頁面上原始線程:

如果您訪問多個內部直接選定的項目選擇 那麼你可以讀取的元素爲了他們得到了選擇: http://jsfiddle.net/jdecuyper/zx7vZ/

$("#m1").select2(); 

$("#submit_selection").click(function() { 

    var selectedItems = ""; 
    var selectedItemIds = ""; 
    var separator = ""; 
    for(var i = 0; i < $("#m1").select2("data").length; i++) 
    { 
     selectedItems += separator + $("#m1").select2("data")[i]["text"]; 
     selectedItemIds += separator + $("#m1").select2("data")[i]["id"]; 
     separator = " "; 
    } 
    $("#m1selectedItem").val(selectedItems); 
    $("#m1selectedItemIds").val(selectedItemIds); 

}); 

添加一個隱藏屬性上SUBM收集下令ID(或價值)的文本輸入它和冠軍一樣。