【发布时间】:2020-09-12 22:42:57
【问题描述】:
我正在使用 select2 来允许用户选择多个选项。一切正常,除了一个令人沮丧的问题。
第一次单击保存按钮保存项目时,它可以工作。但是在随后的调用中,项目的 ID 将替换为项目的位置。例如,如果我选择了 ID 3、6 和 10,则第一个 Save 将起作用,并将 3、6、10 传递给控制器。
但是如果我重新加载视图并单击保存,则会传入数字 0、1、2(即它们在选择中的相对位置)。
代码如下:
首先,HTML:
<select id="selectGroup" class="form-control" multiple="true">
在 $(document).ready 上:
// Load Groups
$("#selectGroup").select2({ placeholder: 'Select' });
$.ajax({
url: ROOT_URL + "Group/GroupList",
type: "GET",
success: function (data) {
let dropdown = $('#selectGroup');
dropdown.empty();
dropdown.append($('<option></option>').attr('value', 0).text("(Select)"));
$.each(JSON.parse(data), function (key, entry) {
dropdown.append($('<option></option>').attr('value', entry.GroupID).text(entry.GroupName));
})
},
error: function (passParams) {
Notify(passParams, "Unexpected Error Loading Groups", "error");
}
});
最后是用于保存的 js(从一个传入 loanID 的按钮调用):
function LoanGroupSave(loanID) {
var grpIDs = '';
[].forEach.call(document.querySelectorAll('#selectGroup :checked'), function (elm) {
grpIDs += elm.value + ',';
})
var editURL = location.protocol + '//' + location.host + "/Loan/LoanGroupSave";
//alert(editURL);
var obj = { "LoanID": loanID, "GroupIDs": grpIDs };
alert(JSON.stringify(obj));
$.ajax({
type: "POST",
url: editURL,
data: JSON.stringify(obj),
contentType: "application/json; charset=utf-8",
dataType: "json",
}).done(function (response) {
if (response.success) {
Notify("Group(s) information has been saved", "Saved", "success", false, "toast-top-right", 5000);
}
else {
OpenPopupGeneral("Error(s)", response.message);
}
}).fail(function (jqXHR, textStatus, errorThrown) {
OpenPopupGeneral("Unexpected Error(s)", "Error = " + errorThrown);
});
}
【问题讨论】:
标签: javascript asp.net-mvc jquery-select2