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 イベントが存在する完全な複数選択呼び出しを使用するなど、複数選択を新しいオプションのリストに戻すことはできません。空か古いリストがあります。選択リストには、更新/再構築呼び出しを行うときに正しいオプションが表示されます。

前もって感謝します。T

4

1 に答える 1