2

我有 2 个引导多选框。我想根据通过 Ajax 调用在另一个中所做的选择来刷新其中的项目。

除了多选用来显示选项的选项没有被“重建”或“刷新”填充之外,一切正常。

代码:

标记多选”

        $('#Groups').multiselect({
        onChange: function (option, checked) {
            //get all of the selected tiems
            var values = $('#Groups option:selected');
            var selected = "";
            $(values).each(function (index, value) {
                selected += $(value).prop('value') + ",";
            });
            selected = selected.substring(0, selected.length - 1);
            //update hidden field with comma delimited string for state persistance
            $("#Hidden_Groups").val(selected);
        },
        includeSelectAllOption: true
    });

更新选项列表:

$('#JobCodes').multiselect({
        onDropdownHide: function(event) {
            console.log("start");
            var option = $("#Groups");
            //clear out old consolidations
            option.empty();
            console.log("emptied");

            ////get consolidation and append to select options list
            $.getJSON("/Reports/GetGroups/", { options: $("#Hidden_JobCodes").val() }, function (result) {
                $.each(result, function (index, item) {
                    console.log(item.text);
                    option.append($("<option />").val(item.id).text(item.text));
                });
            });

            option.multiselect('destroy');
            option.multiselect('rebuild');
            option.multiselect('refresh');
        },

将销毁、重建和刷新作为我尝试过的示例。在每个订单和组合中都使用了所有这些,但没有运气。

Destroy 会将我的多选“更改”回标准选择,但无论我之后做什么,我都无法让多选返回新的选项列表,包括在存在 onchange 事件的情况下使用完整的多选调用。它要么是空的,要么是旧列表。当我进行刷新/重建调用时,选择列表具有正确的选项。

提前致谢。吨

4

1 回答 1

0

完全是我的错!!

对 /destroy/refresh/rebuild 的调用在 ajax 调用之外。所以在我的新列表返回之前执行,因此当时没有要重建的列表。

解决方案:

 ////get consolidation and append to select options list
            $.getJSON("/Reports/GetGroups/", { options: $("#Hidden_JobCodes").val() }, function (result) {
                $.each(result, function (index, item) {
                    console.log(item.text);
                    option.append($("<option />").val(item.id).text(item.text));
                });
                option.multiselect('rebuild')
            });
于 2015-09-30T05:57:11.387 回答