Javascript Select2 v4.val()不维护数据对象中元素的顺序

Javascript Select2 v4.val()不维护数据对象中元素的顺序,javascript,jquery,select2,jquery-select2-4,Javascript,Jquery,Select2,Jquery Select2 4,我有一个select2(v4)选择框,人们在其中选择代码,并且必须保持顺序。当他们最初添加元素时,这非常有效: 但是,这是一个用于页面上许多不同元素的弹出窗口。这意味着我必须清除这个数组,并在运行中用存储的数据对象加载它 我的数据对象保留顺序为var codeArray=['7990','268'] 但当我使用: $(element).val(codeArray).trigger("change") 我得到以下信息: 如何在装货时维持订单?是否有一个隐蔽的解决方法?好的,修复程序非常粗糙,

我有一个select2(v4)选择框,人们在其中选择代码,并且必须保持顺序。当他们最初添加元素时,这非常有效:

但是,这是一个用于页面上许多不同元素的弹出窗口。这意味着我必须清除这个数组,并在运行中用存储的数据对象加载它

我的数据对象保留顺序为
var codeArray=['7990','268']

但当我使用:

$(element).val(codeArray).trigger("change")
我得到以下信息:


如何在装货时维持订单?是否有一个隐蔽的解决方法?

好的,修复程序非常粗糙,但我会发布我的:

function rebuildForm(codeArray) {
  clearFormContents();
  $.each(codeArray, function(j,obj){
    var found = false;
      code_list.some(function(el){
        if (el.value == obj) {
            var str = (el.text).split(")");
            $("element option[value=" + el.value + "]").remove();
            $(element).append(new Option("(" + el.value + ")" + str[1] , obj));
            found = true;
        }
      })
      if (!found) {
        $(element).append(new Option("(" + obj + ") Custom Tag" , obj));
      }
    $(element).val(codeArray).trigger("change");
}
很抱歉,如果上面的代码不能很好地工作,我必须清理它以除去一些绒毛并隐藏客户/项目标识

基本上,在重建表单时,我会清除旧表单内容,然后通过数组循环获取每个值/对象。然后,如果select2元素中选项的原始代码列表中存在该值,我将删除该选项并重新生成它。这会将其追加到元素列表的底部,以便在框中保持顺序。我还使用“found”布尔值添加任何自由格式的文本标记

一旦以“正确”的顺序创建了新的选项列表,那么我就能够将这些值添加回selectinputdom元素,并触发select2更改以构建标记

@RohitS在评论中发布的这条帖子展示了以下概念:


我只是根据我的需要修改了它。

我想这会给我一些线索…谢谢@RohitS,我认为这很有帮助。很乐意帮助..别忘了在帖子和答案中投票D