防止多个select元素根据选项中索引的顺序自动排序分配给它的值

Roh*_*han 6 html javascript jquery jquery-select2

我正在使用select2插件将多个选择的html元素转换为更易于呈现的格式.另外我不认为我的问题非常依赖于插件.

该插件内部的作用是 -

this.select.val(val);
Run Code Online (Sandbox Code Playgroud)

where this.select 指向隐藏的多个select元素.

在将函数提供到例如-2,4,0
的值之上时 ,在我执行a时确认存储的值alert(this.select.val())0,2,4,即根据select元素中的选项顺序进行自动不需要的排序..:/

演示 - http://jsfiddle.net/rohanxx/DYpU8/(感谢Mark)

有没有办法在将值输入select元素后保留排序顺序?

谢谢.

Mar*_*ark 4

这个问题问得好。我认为这更多地与多选 html 元素有关,而不是与 select2 有关。

如果你有一个普通的多重选择,就没有“顺序”之类的说话。您只有一个按原始顺序排列的列表,其中每个项目要么被选中,要么未被选中。

我几乎 100% 确定有比下面更好的方法来做到这一点,但对于解决方法来说,它应该做得很好。

最终结果:

在此输入图像描述

JavaScript 代码

// 'data' brings the unordered list, while 'val' does not
var data = $('#e1').select2('data');

// Push each item into an array
var finalResult = [];
for( item in $('#e1').select2('data') ) {
    finalResult.push(data[item].id);
};

// Display the result with a comma
alert( finalResult.join(',') );
Run Code Online (Sandbox Code Playgroud)

JSFiddle:

http://jsfiddle.net/DYpU8/4/