Нажмите на опцию JQuery MultiSlect, и все опции исчезли - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть две функции для добавления параметров в множественный выбор jquery, однако обе они работают ненормально.Во-первых, я не могу отменить выбор.для второго все опции пропали, если я нажму одну.

Инициализация

$("#addrBookNotiMsgRcpt").multiselect({
    selectedList: 1,
    selectedText: "# selected",
    noneSelectedText: "Recipient",
    close: function() {
        if ($("#addrBookNotiMsgRcpt > option").length === 0) {
            $("#abMsgActAll").notify(
                "Select recipient, maximum " + maxRecipient, "warn", {
                    position: "top right"
                }
            );
        }
    }
}).multiselectfilter();

Проблема: Я не могу отменить выборопции из множественного выбора, если я добавлю опции следующим образом

function updateRecipient() {
    let selectedRows = $('input[type="checkbox"]:checked:not(#abMsgActAll)', $('#addressBookMsgTable').DataTable().cells().nodes);
    $('#addrBookNotiMsgRcpt').empty().multiselect('refresh');
    let uniqueOption = [];
    let uniqueEmail = [];
    $.each(selectedRows, function() {
        let option = $("<option></option>");
        let data = $(this).data();
        if (!jQuery.isEmptyObject(data)) {
            option.html(data.username);
            option.attr("data-userid", data.userid);
            option.attr("data-firstname", data.firstname);
            option.attr("data-lastname", data.lastname);
            option.attr('data-email', data.email);
            option.attr('data-contactno', data.contactno);
            option.attr('selected', 'selected');
            option.val(data.userid);
            if (jQuery.inArray(data.email, uniqueEmail) === -1) {
                uniqueEmail.push(data.email);
                uniqueOption.push(option);
            }

        }
    });
    $.each(uniqueOption, function() {
        $("#addrBookNotiMsgRcpt").append($(this));
    });

    $('#addrBookNotiMsgRcpt').multiselect('refresh');
}

Все опции исчезнут, если я просто нажму одну

$("#addrBookRcptSrchBtn").click(function() {
    $.post("retrieveWorkers", $("#addrBookRcptSrchForm").serialize()).done(function(response) {
        if (response.workerList) {
            $('#addrBookNotiMsgRcpt').empty().multiselect('refresh');
            $.each(response.workerList, function(i, worker) {
                let option = $("<option></option>");
                option.val(worker.usrerId).text(worker.fullName);
                $(option).data("userid", worker.usrerId);
                $(option).data("firstname", worker.firstName);
                $(option).data("lastname", worker.lastName);
                $(option).data("email", worker.emailId);
                $(option).data("contactno", worker.phoneNo);
                $("#addrBookNotiMsgRcpt").append(option)

            });
            $('#addrBookNotiMsgRcpt').multiselect('refresh');
        }
    });
});
...