Как выбрать зависимый выпадающий в режиме редактирования - PullRequest
0 голосов
/ 12 марта 2019

Я столкнулся с проблемой при обновлении формы. в этой форме я получаю результат из БД и отображаю значения. есть выпадающий список в зависимости от города и местности. Я выбираю сравнение городов и отображение выбранного значения, но выпадающий список зависит от того, означает ли это, что выпадающий список не заполняется. см. код.

<div class="col-md-3">
    <label for="enq_city">City<span class="red">*</span></label>
    <?php if (isset($cities) && !empty($cities)) { ?>

            <select required="" class="form-control" id="enq_city" name="enq_city">
                <option value="">Choose City</option>
                   <?php foreach ($cities as $city) { 
                       if($city->city_id == $result[0]->enq_city) {
                           $selected = "selected";?>

                <option <?php echo $selected ?> value="<?php echo $city->city_id; ?>">
<?php echo $city->city_name; ?></option>                
                    <?php } ?>       
                    <?php } ?>       
            </select>
    <?php } ?>
</div>
<div class="col-md-3">
    <label for="enq_locality">Locality<span class="red">*</span></label>
    <select required="" class="form-control" id="enq_locality" name="enq_locality">

    </select>
</div>

Мой код Ajax

<script type="text/javascript">
$(document).ready(function() { 
    $('select[name="enq_city"]').on('change', function() {
        var cityId = $(this).val();
        alert(cityId);
        if(cityId) {
            $.ajax({
                url: 'getLocality/'+cityId,
                type: "GET",
                dataType: "json",
                success:function(data) {
                    $('select[name="enq_locality"]').empty();
                    $.each(data, function(key, value) {
                        $('select[name="enq_locality"]').append('<option value="'+ value.locality_id +'">'+ value.locality_name +'</option>');
                    });
                }
            });
        }else{
            $('select[name="enq_locality"]').append('<option value="">No Locality Found</option>');
        }
    });
});

1 Ответ

0 голосов
/ 12 марта 2019

Из того, что я могу понять в вашем вопросе, кажется, что вы обновляете эту страницу каким-то образом (для «редактирования») и извлекаете данные из базы данных и ожидаете, что значения появятся при загрузке.

Если это так, то причина, по которой вы ничего не видите при загрузке страницы, заключается в том, что вы загружаете данные только «при изменении» выбора - и поскольку страница загружается, «изменения» не происходит.- он просто загружен, поэтому JS никогда не запускается.

Один простой способ получить эти данные при загрузке - немного изменить JS .....

<script type="text/javascript">
$(document).ready(function() { 
    // pull the AJAX out to a function that can be used later
    function call_ajax(cityId){
         if(cityId){
             $.ajax({
                url: 'getLocality/'+cityId,
                type: "GET",
                dataType: "json",
                success:function(data) {
                    $('select[name="enq_locality"]').empty();
                    $.each(data, function(key, value) {
                        $('select[name="enq_locality"]').append('<option value="'+ value.locality_id +'">'+ value.locality_name +'</option>');
                    });
                }
             });
         }else{
             $('select[name="enq_locality"]').append('<option value="">No Locality Found</option>');
         }
    }

    $('select[name="enq_city"]').on('change', function() {
        var cityId = $(this).val();
        alert(cityId);
        call_ajax(cityId);
    });
    // now, we make sure that 'enq_locality' is populated on loading the page
    // NOTE:  this presumes that $city->city_id exists 
    // from the example code it is also presumed so not checked here
    call_ajax("<?php echo $city->city_id; ?>"); 
});

Кодне проверен (поскольку вы не дали полный пример для тестирования .....), хотя должен дать некоторые идеи по крайней мере об одном способе получения данных о загрузке страницы.

Если я не понялвопрос, пожалуйста, дайте больше кода и подробное описание того, что именно происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...