默认选择选项列表更新后立即更新select2选项列表

时间:2019-02-22 10:12:21

标签: javascript jquery jquery-select2

我正在使用select2-v4.0.5。我正在使用类似的东西在不同的数组中显示相同的选项列表:

@foreach($rows as $rk => $rv)
        <tr>

            <td>
                <select class="form-control select2 mselect" name="row[]">
                    <option value=" " >-- Select --</option>
                    @foreach($db_header as $db)
                        <option value="{{$db}}">{{$db}}</option>
                    @endforeach
                </select>
            </td>

        </tr>

@endforeach

在这里,如果我在第一行的下拉列表中选择name。此name选项应隐藏在其他行的下拉列表中。因此,为实现此目的,我编写了以下代码:

var d_array = Array();
$(document).ready(function(){

    $('.mselect').on("change", function (e) {
              d_array = [];
              $('.mselect').each(function(k,v){
                    cv = $(this).val();           
                    if($.trim(cv) != '')
                    {
                        d_array.push(cv);
                    }

              });

              checkMSelect2();

        });

});

function checkMSelect2()
{

    $('.mselect').each(function(k,v){
            c = $(this);
            cv = c.val();
            c.find('option').show();
            $(d_array).each(function(ki, vi){
                if(vi != cv)
                {
                    c.find('option[value="'+vi+'"]').hide();

                }

            });

    });


}

如果我使用默认的HTML选择选项,则此方法完全正常。但是,如果我初始化select2,那些隐藏的选项也会在其他行中显示。

$(".select2").select2();

看起来select2首先被初始化,而select更新后没有被更新。在选择列表更新后,如何强制select2重新读取。

0 个答案:

没有答案