Я пытаюсь захватить все выбранные пункты в следующем выборе несколько и разделить их запятой. Код ниже:
<select id="ps-type" name="ps-type" multiple="multiple" size="5">
<option>Residential - Wall Insulation</option>
<option>Residential - Attic /Crawl Space Insulation</option>
<option>Residential - Foundation Insulation</option>
<option>Residential - Exterior Roof System</option>
<option>Commercial - Wall Insulation</option>
<option>Commercial - Air Barrier System (Walltite)</option>
<option>Commercial - Roof System</option>
</select>
Результат, который я ищу, следующий:
Жилой - стенная изоляция, коммерческая - стенная изоляция...
Вы можете использовать селектор :selected
и встроенную функцию $.map()
как часть вашей цепочки.
$("option:selected").map(function(){ return this.value }).get().join(", ");
Добавьте значения в массив и используйте join
для создания строка:
var items = [];
$('#ps-type option:selected').each(function(){ items.push($(this).val()); });
var result = items.join(', ');
var list = "";
$('#ps-type option:selected').each(function(){
list += this.value + ", ";
});
return list.substr(0, list.length - 2);
Что-то вроде этого должно помочь:
var result = "";
$('#ps-type option:selected').each(function(i, item){
result += $(this).val() + ", ";
});
В элементе множественного выбора команда val
для select
element вернет массив значений выбранных опций.Если значения отсутствуют, используется текст элемента:
var output = $("#ps-type").val().join(', ');
update: Однако, когда нет выбранных параметров, val ()
возвращает null
не пустой множество. Один из способов обойти это:
var output = ($("#ps-type").val() || []).join(', ');
Вы можете поэкспериментировать с этим в этой демонстрации, которую я собрал .
Из документы :
В случае элементов
, метод
.val ()
возвращает массив, содержащий каждую выбранную опцию.
Вот:
var result = new Array();
$("#ps-type option:selected").each(function() {
result.push($(this).val());
});
var output = result.join(", ");