2015-04-20 2 views
4

Я использую Bootstrap Multiselect, это моя установка в моем HTML:Как получить все выбранные значения, используя Bootstrap MULTISELECT и использовать его в AJAX

<div class="form-group"> 
    <select class="form-control" id="bldg_type" multiple="multiple">{% for type in buildings %} 
     <option value="{{type.bldg_type}}">{{type.bldg_type}}</option>{% endfor %} 
    </select> 
</div> 

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

$.ajax({ 
    url: "cnt_bldg/", 
    type: "GET", 
    dataType: "JSON", 
    data: { 
     'brgy_id': brgy_id, 
     'bldg_type': $('#bldg_type option:selected').val() 
    }, 
    ... 

проблема с $('#bldg_type option:selected').val() есть я могу получить только 1 значение. Напр. Я проверяю Market и Police Station по моему выбору, и посмотрел его в моей консоли http://127.0.0.1:8000/cnt_bldg/?brgy_id=All&bldg_type=Market". Он получает только Market.

Как получить все значения и использовать их для моего запроса?

BTW, я использую Django. Я уже прочитал this answer, но я не знаю, как использовать результат в моем коде AJAX выше.

ответ

2
<div class="form-group"> 
    <select id="multiselect1" class="form-control" id="bldg_type" multiple="multiple">{% for type in buildings %} 
     <option value="{{type.bldg_type}}">{{type.bldg_type}}</option>{% endfor %} 
    </select> 
</div> 

Добавить идентификатор multiselect в ваш элемент управления.

Объявите переменную глобально в вашем JavaScript, как показано ниже:

var selected = []; 

Инициализировать его, как показано ниже [по ссылке ответ вы предоставили]

$('#multiselect1').multiselect({ 
    selectAllValue: 'multiselect-all', 
    onChange: function(element, checked) { 
     var brands = $('#multiselect1 option:selected'); 
     $(brands).each(function(index, brand){ 
      selected.push([$(this).val()]); 
     }); 
    } 
}); 

отправить его через AJAX.

$.ajax({ 
    url: "cnt_bldg/", 
    type: "GET", 
    dataType: "JSON", 
    data: { 
     'brgy_id': brgy_id, 
     'bldg_type': selected //This will send the values as list of strings 
    }, 
    ... 

Примечание - При шевелении полученных значений, принять его в виде списка строк в вашем методе сервера !!

+0

Я попробовал это, она возвращает что-то вроде этого: 'http://127.0.0.1:8000/cnt_bldg/?brgy_id=All&bldg_type%5B%5D = Market & bldg_type% 5B% 5D = Транспорт + Терминал% ', в котором это' [] '. –

+1

Да, это означает список параметров. Проверьте ** [эту ссылку] (http: // stackoverflow.com/questions/5216162/how-to-create-list-field-in-django) ** тоже .. –

+0

Используя этот пример, я обнаружил, что мне пришлось добавить строку обработчику событий следующим образом: var brands = $ ('# опция multiselect1: selected '); selected = []; $ (бренды) .each (функция (индекс, бренд) { selected.push ([$ (this) .val()]); }); в противном случае выбранный массив закончил с несколькими записями –

2

Его действительно просто получить значения параметров мультиселектора.

$('#bldg_type').multiselect({ 
     onChange: function(){ 
      var selectedOptions = $('#bldg_type').val(); 
      console.log(selectedOptions); 
}}) 

ВыбранныеOptions должны предоставить вам список выбранных параметров. Он дает все значения, которые выбираются из опций в теге select.

Вы можете определить переменную selectedOptions где-то глобально, чтобы вызов ajax мог получить к ней доступ.

удачи и надеется, что это помогает

7

вы пробовали просто

$('#bldg_type').val() 

Он работает в моей самозагрузке-множественный.

+0

работает над плагином: http://davidstutz.github.io/bootstrap-multiselect/ – danigitman

+0

$ ('# multiselectId'). val() работает хорошо, я получаю все выбранные значения, т. е. ["1", "3", "8"] –

1

HTML

<div class="form-group"> 
     <select id="multiselect1" class="form-control" id="bldg_type" multiple="multiple">{% for type in buildings %} 
      <option value="{{type.bldg_type}}">{{type.bldg_type}}</option>{% endfor %} 
     </select> 
</div> 

Jquery

var selected = $('#multiselect1').val()