使用Java脚本的从属下拉列表仅适用于更改主要下拉列表,如果已经选择了主要下拉列表,则必须在页面加载上起作用

时间:2018-09-29 04:48:38

标签: javascript jquery ajax laravel

我有一个主下拉菜单(国家/地区)和第二个从属列表dropdown。 (状态)。仅当选择主dropdown时,此代码才能正常工作。但如果在页面加载时已选择主下拉菜单,则无法使用。

主要下拉列表国家/地区:

<select class="select4" name="country" id="country">
  <option value="">Please Select</option>
     @foreach($country_data as $country)
       <option value="{{$country->country_id}}" {{$profile_data->country == $country->country_id  ? 'selected' : ''}}>{{$country->country_name}}</option>
     @endforeach
</select>

从属下拉列表状态:

<select class="select4" name="state" id="state">
  <option value="">Please Select</option>
      @foreach($state_data as $state)
         <option value="{{$state->state_id}}" {{$profile_data->state == $state->state_id  ? 'selected' : ''}}>{{$state->state_name}}</option>
      @endforeach
</select>

Java脚本代码以填充相关的dropdown

<script type="text/javascript">
 $(document).ready(function() {
   $('select[name="country"]').on('change', function() {
     var countryID = $(this).val();
        if(countryID) {
            $.ajax({
                url: 'family/state/'+countryID,
                type: "GET",
                dataType: "json",
                success:function(data) {
                    $('select[name="state"]').empty();
                    $.each(data, function(key, value) {
                        $('select[name="state"]').append('<option value="'+ value.state_id +'">'+ value.state_name +'</option>');
                    });

                }
            });
        }else{
            $('select[name="state"]').empty();
        }
    });
});

Ajax代码还必须如何在页面加载时工作?

1 个答案:

答案 0 :(得分:1)

您将需要手动触发更改事件。

在您之后:

$('select[name="country"]').on('change', function() { ... }

强制触发:

$('select[name="country"]').trigger('change');

这样,当document.ready函数即将结束时,您可以强制触发事件,如果事件已设置,它将触发ajax调用