【问题标题】:select2 returning position of items, not ID of itemsselect2 返回项目的位置,而不是项目的 ID
【发布时间】: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


    【解决方案1】:

    为犯同样错误的人发帖。

    问题在于我的负载 - 我需要添加 GroupID 作为键,而不是键参数值中的行号:

            success: function (data) {
                $.each(JSON.parse(data), function (key, entry) {
                    var $newOption = $("<option selected='selected'></option>").val(entry.GroupID).text(entry.GroupName);
                    $("#selectGroup").append($newOption).trigger('change');
                }
    

    【讨论】:

      猜你喜欢
      • 2021-09-19
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      相关资源
      最近更新 更多