select2(js)表单元素的表单结果的简单排序


Simple sort for form result of select2 (js) form element?

Im使用ivaynberg的select2,并且在提交时如何返回数据存在问题。

是否有任何方法可以在不使用可排序的拖放解决方案的情况下,按照在select2元素中选择结果的顺序获得表单中的结果提交数据?假设有三种选择:

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

在multiple-select2元素中,选择是绿色然后是红色(在渲染的元素中,绿色位于红色之前)。提交表单时,数组返回:

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

按照它们在初始html数据中出现的顺序。但我想记录用户通过按如下所选顺序输出提交数据来选择这些值的顺序:

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

select2中有任何开关或选项可以用来执行此操作?(有点JS新手,所以我不理解这个很棒的函数提供的所有文档)。

我在select2 github问题页面上的原始线程上发布了一段来自jdecuyper的优秀代码片段:

如果直接访问多选中的选定项目然后你可以按照元素被选中的顺序读取它们: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);
});

在文本输入中添加一个隐藏属性,收集提交时的有序ID(或值),它就像冠军一样工作。