Select2 在 MVC 中为 Multi-Select 设置值
Select2 Set Values for Multi-Select in MVC
我正在开发一个在部分表单上使用 select2 多选的项目。此代码适用于“创建”页面,但当我转到“编辑”页面时,我 运行 遇到了问题。我希望能够从创建 "Items" 中获取值,然后使用 jQuery 在编辑页面上为那些 "Items."
设置值
这是我的:
var re = /[0-9]+$/;
$('#Item').select2({
theme: "bootstrap",
placeholder: "Not Set",
tags: true
});
$('#Item').on("select2:select", function (evt) {
var element = evt.params.data.element;
var $element = $(element);
$element.detach();
$(this).append($element);
$(this).trigger("change");
});
var values = "@Model.ItemIds"; //pull ItemIds from Model in MVC
$.each(values.split(","), function (i, e) {
if (e != "Not Set" && e != "" && e != null && e != undefined) {
if (!re.test(e)) {
var newList = $.merge($('#Item').select2('data'), [{
id: e,
tag: e
}]);
$("#Item").select2('data', newList);
$("#Item").append('<option value="' + e + '">' + e + '</option>');
}
$("#Item option[value=" + e + "]").prop("selected", true);
}
});
所以,当页面加载时,我得到的是 @Model.ItemIds
中的项目,但它们是按照 <select>
下列出的顺序排列的他们在 @Model.ItemIds.
中的顺序 任何帮助将不胜感激。谢谢!
这是我的新代码:
var values = "@Model.ItemIds"; //pull ItemIds from Model in MVC
$.each(values.split(","), function (i, e) {
if (e != "Not Set" && e != "" && e != null && e != undefined) {
if (!re.test(e)) {
var newList = $.merge($('#Item').select2('data'), [{
id: e,
tag: e
}]);
$("#Item").select2('data', newList);
$("#Item").append('<option value="' + e + '">' + e + '</option>');
}
else{
$("#Item").append($("#Item option[value='" + e + "']"));
}
$("#Item option[value='" + e + "']").prop("selected", true);
}
});
将现有选项附加到末尾似乎解决了我的问题。
我正在开发一个在部分表单上使用 select2 多选的项目。此代码适用于“创建”页面,但当我转到“编辑”页面时,我 运行 遇到了问题。我希望能够从创建 "Items" 中获取值,然后使用 jQuery 在编辑页面上为那些 "Items."
设置值这是我的:
var re = /[0-9]+$/;
$('#Item').select2({
theme: "bootstrap",
placeholder: "Not Set",
tags: true
});
$('#Item').on("select2:select", function (evt) {
var element = evt.params.data.element;
var $element = $(element);
$element.detach();
$(this).append($element);
$(this).trigger("change");
});
var values = "@Model.ItemIds"; //pull ItemIds from Model in MVC
$.each(values.split(","), function (i, e) {
if (e != "Not Set" && e != "" && e != null && e != undefined) {
if (!re.test(e)) {
var newList = $.merge($('#Item').select2('data'), [{
id: e,
tag: e
}]);
$("#Item").select2('data', newList);
$("#Item").append('<option value="' + e + '">' + e + '</option>');
}
$("#Item option[value=" + e + "]").prop("selected", true);
}
});
所以,当页面加载时,我得到的是 @Model.ItemIds
中的项目,但它们是按照 <select>
下列出的顺序排列的他们在 @Model.ItemIds.
中的顺序 任何帮助将不胜感激。谢谢!
这是我的新代码:
var values = "@Model.ItemIds"; //pull ItemIds from Model in MVC
$.each(values.split(","), function (i, e) {
if (e != "Not Set" && e != "" && e != null && e != undefined) {
if (!re.test(e)) {
var newList = $.merge($('#Item').select2('data'), [{
id: e,
tag: e
}]);
$("#Item").select2('data', newList);
$("#Item").append('<option value="' + e + '">' + e + '</option>');
}
else{
$("#Item").append($("#Item option[value='" + e + "']"));
}
$("#Item option[value='" + e + "']").prop("selected", true);
}
});
将现有选项附加到末尾似乎解决了我的问题。