bootstrap-multiselect rebuild / refresh无法正常工作

时间:2015-09-30 05:38:47

标签: bootstrap-multiselect

我有2个bootstrap-multiselect框。我想根据通过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会将我的multiselect“更改”回标准选择,但无论我做什么,之后我都无法使用新的选项列表返回多选项,包括使用onchange事件存在的完整多选调用。它要么空了又有旧列表。当我进行刷新/重建调用时,选择列表具有正确的选项。

提前致谢。 Ť

1 个答案:

答案 0 :(得分: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')
            });