#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();
Спасибо