2016-03-30 2 views
0

Я использую Bootstrap v3 и Codeigniter ... В моем приложении есть два элемента выбора для выбора состояния и города. Я использую Ajax и при выборе состояния, населенный второго элемент с родственными городами:
Bootstrap Select With Dropdown

$('#state').change(function(){ 
    var state_id = $('#state').val(); 
    if(state_id != ""){ 
     var post_url = "<?php echo base_url(); ?>student/get_cities/" + state_id; 
     $.ajax({ 
     type: "POST", 
     url: post_url, 
     cache: true, 
     success: function(cities){ //calling the response json array 'cities' 
      $('#city').empty(); 
      $.each(cities, function(id, city){ 
       $('#city').append($("<option></option>").val(id).text(city)); 
      }); //each 
     } 
    }); //ajax 
    } 
}); //change 

все хорошо, просто самонастройки выберите вариант элемент имеет плохой вид на других браузерах! (это хорошо только на хроме). поэтому я решил использовать плагин bootstrap-select: Bootstrap-Select
Мой вопрос:: Как я мог заполнить второй вариант выбора для городов? На самом деле, он будет заполнен, но так что bootstrap-select, используя раскрывающийся список, я должен также заполнить его.
спасибо за внимание ...


Редакцией:

<select class="form-control selectpicker" name="state" id="state"> 
<!--in a foreach loop, echo all states with the proper value--> 
</select> 

<select class="form-control selectpicker" name="city" id="city"> 
</select> 




РЕШЕННЫЕ: я найти решение ... просто добавить одну строку после заполнения выберите элемент!

$('.selectpicker').selectpicker('refresh'); 
+0

Вы могли бы создать jsfiddle, http: //jsfiddle.net – dreamweiver

+0

можно ли увидеть html? - ваш вопрос больше о bootstrap-select, но в коде, который вы вставили, нет кода начальной загрузки. как это происходит, вы на самом деле не дали нам четкой проблемы для решения. что сказано - правильно ли устанавливается post_url? это запрос ajax? называется функция успеха? что такое «города» в этот момент? что такое id и город, когда вы пересекаете города? does #city существует? то есть просто поместите некоторые точки останова/каротажа при прохождении потока –

+0

Спасибо за внимание. Я думаю, это понятно, потому что, как я уже сказал, все работает хорошо. правильный URL и ... города - ответ json (как я сказал в коде, как комментарий), и каждый город имеет идентификатор и имя (город). и в цикле будут установлены элементы опций. В плагине bootstrap-select просто добавьте класс selectpicker для выбора элемента. – Parsa

ответ

0

Как я понимаю ваш вопрос город выбрать заполнит из AJAX, но он теряет функциональность selectpicker?

Возможно, это связано с линией $ ('# city'). Empty()?

Если да: тогда вы могли бы попробовать начать снова с нового выбора? Например.

заменить: $ ('# city'). Empty();

с этим кодом

$('#city').remove(); 
$('#state').after($('<select></select>').addClass('form-control selectpicker').attr({'id' : 'city', 'name' : 'city'})); 
//do your ajax stuff and add the options 
$('#city').selectpicker(); //initialise it 

* непроверенным

(Если выше, работает это может быть излишним, и вы могли бы просто решить эту проблему путем повторной инициализации города выбрать после повторной загрузки. Т.е. вам просто понадобится $ ('# city'). selectpicker(); line).

+0

На какое-то время забыть «выбрать сборщик». Каждый раз, когда изменяется опция состояния, сначала выбираются варианты выбора для городов, а затем заполняются новыми (я делаю это в функции, в части успеха). Теперь «select picker» ... этот плагин использует раскрывающуюся структуру и добавляет некоторые ul и li для элемента select. в этой ситуации, когда я меняю параметр состояния, мои старые параметры для городов будут генерироваться правильно, НО ...потому что просмотр выполняется путем выпадающего меню, и я не смог его восстановить (на основе измененной опции в состоянии) это не будет отображаться !!! – Parsa

+0

Решено! (Найдите решение) – Parsa

+0

Хорошая новость! Спасибо за то, что дали нам знать. –