Jquery — установить параметр по умолчанию в динамически изменяемом выпадающем списке

#javascript #jquery #json #drop-down-menu

#javascript #jquery #json #выпадающее меню

Вопрос:

Как мне установить значение по умолчанию в динамически заполняемом выпадающем списке? Вот мой код:

 function loadCountryModal(countryId) {
    $.ajax({
        type: "GET",
        url: "index.php?task=Admin.getCountryById",
        data: "countryId="   countryId,
        success: function (jsonData) {
            var obj = $.parseJSON(jsonData);
            $("#country").val(obj['data'][0]['name']);

            $.each(obj['data']['regionList'], function () {
                $('#region').append(
                $("<option></option>").text(this.name).val(this.region_id));
            });
        }
    });
}
  

Комментарии:

1. О каком выпадающем списке вы говорите? Здесь есть два #country и #region

2. какой из них вы хотите выбрать? Я имею в виду, при каком условии?

3. Первое, что нужно было бы попробовать, чего у вас, похоже, нет. selectedIndex свойство вашего элемента select — это свойство, которое вы ищете.

4. Я бы хотел, чтобы #region был выбран после итерации

Ответ №1:

После вашего цикла $.each добавьте:

 $('#region').val('default_option_value');
  

Комментарии:

1. Я уже пробовал это сделать: $('#region').val(obj['data'][0]['region_id']); безуспешно…

2. Вы проверили, что такое obj[‘data’][0][‘region_id’] ? Запишите его в консоль для проверки. В частности, вы уверены, что obj[‘data’][0] совпадает с obj[‘data’][‘regionList’] , который вы зацикливаете в своем $.each?

3. Он выводит region_id. Вот объект JSON, на который вы можете взглянуть: { "status": 0, "msg": null, "data": { "0": { "country_id": "37", "region_id": "5", "name": "Botswana", "is_active": "1", "position": "37", "region": "East amp; South Africa" }, "regionList": [ { "region_id": "4", "name": "Asia amp; Pacific", "is_active": "1", "position": "2" } ] }, "count": 0 }

4. Итак, obj[‘data’][0][‘region_id’] должен возвращать «5» в этом случае? Было ли <значение параметра =»5″>xxxxx</option> добавлено в #region в результате цикла $.each?

5. Да, он был добавлен, но опция не выбрана, вот в чем проблема 🙂 Я использую загрузочный класс «select2-me» для создания dropdwon. Я не уверен, проблема это или нет…

Ответ №2:

просто используйте .attr("selected",true);

 $("#country").val(obj['data'][0]['name']).attr("selected",true);
  

Ответ №3:

 $('#region').val('valueToSelect');
  

Ответ №4:

Извините, ребята, я забыл упомянуть… Я использую класс Bootstrap «select2-me» для отображения выпадающего списка

Поэтому необходим другой метод выбора. Это исправление:

$('select').select2();

Спасибо