Я использую SumoSelect для вариантов множественного выбора. Но я не могу получить массив выбранных значений. Ниже пример кода:

<script type="text/javascript">
    $(document).ready(function () {         
    window.testSelAll = $('.testSelAll').SumoSelect({okCancelInMulti:true, selectAll:true });           

        $('.btnOk').on('click', function(){
            var obj = [];
            $('option:selected').each(function () {
                obj.push($(this).index());  
                alert("Selected Values=="+$(this).val());   
            });

            for (var i = 0; i < obj.length; i++) {                      
                $('.testSelAll')[0].sumo.unSelectItem(obj[i]);
            }
        });                 
    });

</script>

<select multiple="multiple" placeholder="Share Your Friends" onchange="console.log($(this).children(':selected').length)" class="testSelAll">
                <option value="1">Volvo</option>
               <option value="2">Saab</option>
               <option  value="3">Mercedes</option>
               <option value="audi">Audi</option>
               <option value="bmw">BMW</option>
               <option value="porsche">Porche</option>
               <option value="ferrari">Ferrari</option>
               <option value="mitsubishi">Mitsubishi</option>
       </select>
3
Ramalingam Perumal 16 Дек 2015 в 11:16

3 ответа

Лучший ответ

Если вы хотите выбрать значения вместо текста , просто измените .text() на .val().

Если вы хотите получить массив, смотрите ниже рабочий пример внизу.

jQuery

$(document).ready(function() {
  $('.testSelAll').SumoSelect({
    okCancelInMulti: true,
    selectAll: true
  });

  $('.btnOk').on('click', function() {
    var obj = [],
        items = '';
    $('.testSelAll option:selected').each(function(i) {
      obj.push($(this).val());
      $('.testSelAll')[0].sumo.unSelectItem(i);
    });
    for (var i = 0; i < obj.length; i++) {
      items += ' ' + obj[i]
    };
    alert(items);
  });
});

HTML

<select multiple="multiple" class="testSelAll">
  <option value="car1">Volvo</option>
  <option value="car2">Saab</option>
  <option value="car3">Mercedes</option>
  <option value="car4">Audi</option>
</select>

Работающий JSFIDDLE

5
Magnus Engdal 16 Дек 2015 в 08:55

Вы можете получить их из скрытого элемента select. используя JQuery, например.

$('.select1 option:selected')
3
brandelizer 16 Дек 2015 в 08:41

Я думаю, что самый чистый способ сделать это. Используется для выбора элемента HTML5, лежащего в основе SumoSelect.

HTML

<select multiple="multiple" class="testSelAll" id="multi-select">
  <option value="car1">Volvo</option>
  <option value="car2">Saab</option>
  <option value="car3">Mercedes</option>
  <option value="car4">Audi</option>
</select>

Javascript

var values = $('#multi-select').val();

Эта строка вернет список выбранных значений.

2
Mazen Elkashef 5 Дек 2016 в 10:48