Как создать раскрывающийся список

Я хочу создать список элементов в раскрывающемся списке на основе предыдущего выбора из другого выбора. Все товары находятся в базе данных.

Вот что я сделал:

Javascript:

$(document).ready(function () {
    $(document).on('change', '#province_name', function() {
        var province_id = $(this).val();
        var div = $(this).parent();
        var op = " ";
        $.ajax({
            type: 'get',
            url: '{!!URL::to('admin/findIDProvince')!!}',
            data: {'id':province_id},
            success: function(data){
                for (var i = 0; i < data.length; i++){
                    op += '<option value = "'+data[i].id+'">'+data[i].city_name+'</option>';
                }
                div.find('#city').html(" ");
                div.find('#city').append(op);
            },
            error: function(){
                console.info('success');
            },
        });
    });
});

Маршруты (web.php):

Route::namespace('Admin')->prefix('admin')->middleware('auth', 'CheckAdmin')->group(function (){
    $this->get('/findIDProvince', 'SchoolsListController@findIDProvince');
});

Контроллер (Admin / SchoolsListController.php):

public function findIDProvince(Request $request)
    {
        $data = City::select('name', 'id')->where('province_id', $request->id)->take(100)->get();
        return response()->json($data);
    }

HTML (view.blade.php)

<div class = "form-group">
    <label class = "col-md-3" for = "province_name">province_name</label>
    <div class = "col-md-9">
        <select id = "province_name" name = "province_name" class = "form-control col-md-12" required>
            @foreach($province_names as $province_name)
                <option value = "{{ $province_name->id }}">{{ $province_name->province_name }}</option>
            @endforeach
        </select>
    </div>
</div>
<div class = "form-group">
    <label class = "col-md-3" for = "city_name">city_name</label>
    <div class = "col-md-9">
        <select id = "city_name" name = "city_name" class = "form-control col-md-12" required>
        </select>
    </div>
</div>

Что я делаю неправильно?

Вы можете управлять им самостоятельно через ajax и запросы к БД

Indra 22.05.2018 10:04

в чем твоя ошибка? что не так с кодом?

Indra 22.05.2018 10:09

Вы хотите, чтобы ваш option из тега select автоматически выбирался?

Saurabh 22.05.2018 10:10

да . Я хочу, чтобы мой вариант из тега select был выбран автоматически.

Mahmoud Khosravi 22.05.2018 10:13

@MahmoudKhosravi Я отправил ответ.

Saurabh 22.05.2018 10:14

никаких ошибок я не вижу

Mahmoud Khosravi 22.05.2018 10:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
41
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Сначала создайте скрытое поле со значением, для которого необходимо выбрать параметр.

<input type = "hidden" value = "{{ $yourOptionValueToSelect }}" id = "selectThis">

Затем с помощью jQuery найдите соответствующее значение из вашего варианта и измените соответствующий атрибут, как выбранный.

$('option').each(function() {
    if (this.value == $('#selectThis').val()) {
        this.setAttribute('selected', 'selected');
    }
});

Пример:

<input type = "hidden" value = "2" id = "selectThis">

<select>
    <option value = "1">Hello</option>
    <option value = "2">World</option>
</select>

Здесь Option 2 будет выбран по умолчанию с указанным выше кодом jQuery. По вашему мнению, он будет изменен на:

<option value = "2" selected = "selected">World</option>

Обновленный кодекс обновлен.

Saurabh 22.05.2018 10:18

{{$ yourOptionValueToSelect}} Что это?

Mahmoud Khosravi 22.05.2018 10:20

Это идентификатор опции, которую вы хотите выбрать.

Saurabh 22.05.2018 10:21

Я хочу изменить идентификатор города. что скрыто

Mahmoud Khosravi 22.05.2018 10:34

// prepend : attach default value to the begining of the dropdown for region
// $('.region').prepend('<option value = "default" selected = "selected">Please select</option>');

$('.region').on('change', function(e) {


  $('.select2-selection__placeholder').css("font-size", '11px'); // change the font size of the select box
  var region = e.target.value;

  $.ajax({
    url: "{{ url('/dropdown/station?region')}} = " + region, // value.id refers to ring_id
    type: "get",
    cache: false,
    beforeSend: function() {
      $('.ajax-loader').css("visibility", "visible");
    },
    complete: function() {
      $('.ajax-loader').css("visibility", "hidden");
    },
    dataType: 'json',
    success: function(data) {
      // empty the option before we populate the dropdown
      $('#station').empty();

      // define default value
      $('#station').append('<option value = "default" selected = "selected" disabled hidden></option>');

      $.each(data, function(index, subCatObj) {

        // alert(subCatObj.substation_name);
        $('#station').append($('<option>').text(index).attr('value', index));
        $('#station').append('' + index + '');

      });
    },
    error: function(error) {
      console.info(error);
    }
  });
});


$('.station').on('change', function(e) {
  var station = e.target.value;
  $.ajax({
    url: "{{ url('/dropdown/kv-station?station')}} = " + station, // value.id refers to ring_id
    type: "get",
    cache: false,
    beforeSend: function() {
      $('.ajax-loader').css("visibility", "visible");
    },
    complete: function() {
      $('.ajax-loader').css("visibility", "hidden");
    },
    dataType: 'json',
    success: function(data) {
      // empty the option before we populate the dropdown
      $('#kvStation').empty();

      // define default value
      $('#kvStation').append('<option value = "default" selected = "selected" disabled hidden></option>');
      $.each(data, function(index, subCatObj) {

        // alert(subCatObj.substation_name);
        $('#kvStation').append($('<option>').text(index).attr('value', index));
        $('#kvStation').append('' + index + '');
      });
    },
    error: function(error) {
      console.info(error);
    }
  });
});

// kv station dropdown event
$('.kvStation').on('change', function(e) {

  var station = e.target.value;


  $.ajax({
    url: "{{ url('/dropdown/ring?station') }} = " + station, // value.id refers to ring_id
    type: "get",
    cache: false,
    beforeSend: function() {
      $('.ajax-loader').css("visibility", "visible");
    },
    complete: function() {
      $('.ajax-loader').css("visibility", "hidden");
    },
    dataType: 'json',
    success: function(data, jqXHR) {

      // remove the previous data ferom select
      $('#ring').empty();

      // checking the status code; if 204: no content, then
      if (jqXHR.status === 204) {
        $('#ring').append('<option value = "default" selected = "selected">No data</option>');

      } else {
        $('#ring').append('<option value = "default" selected = "selected" disabled hidden></option>');
      }
      // empty the option before we populate the dropdown


      $.each(data, function(index, subCatObj) {

        $('#ring').append($('<option>').text(subCatObj).attr('value', index));
        $('#ring').append('' + index + '');

      });

    },
    error: function(error) {
      console.info(error);
    }
  });


  // ring dropdown event
  $('.ring').on('change', function(e) {
    var id = e.target.value;
    window.open('{{url(' / ring ')}}/' + id, '_blank');
  });
});
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class = "bottom">
  <ul>
    <li>
      <label>Region

                        <select id = "region-select" class = " form-control select2 region" name = "region">
                            <option></option>
                            @foreach($regions as $region)

                                <option value = "{{$region->region}}">
                                    {{$region->region}}
                                </option>
                            @endforeach

                        </select>
                        {{--        {!! Form::select('region', $regions,'Please select ...', ['class' => 'region form-control select2', 'id' => 'region-select']) !!}--}}

                    </label>
    </li>

    <li>
      <label>Station
                        <select id = "station" class = " selectpicker station form-control input-sm" name = "station">
                            <option value = ""></option>
                        </select>

                    </label>
    </li>

    <li>
      <label>KV Station
                        <select id = "kvStation" class = "kvStation form-control input-sm" name = "kv-station">
                            <option value = ""></option>
                        </select>

                    </label>
    </li>
    <li>
      <label>Ring
                        <select id = "ring" class = "ring form-control input-sm" name = "ring">
                            <option value = ""></option>
                        </select>
                    </label>
    </li>
  </ul>

  <i id = "loading-image" hidden class = "livicon" data-name = "spinner-three" data-size = "50" data-c = "#fff" data-hc = "#fff" data-loop = "true"></i>

  <div class = "ajax-loader">
    <img id = "loading-image" class = "loading-image img-responsive" src = "{{ asset('images/ajax-loader.gif') }}">
  </div>
</div>

Другие вопросы по теме