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