JQuery - 多选选项

时间:2010-02-18 16:23:31

标签: jquery select

我正在尝试抓取以下选择多个中的所有选定项目,并用逗号分隔它们。代码如下:

<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>

我正在寻找的结果如下:

住宅 - 墙体保温,商业 - 墙体保温,......

9 个答案:

答案 0 :(得分:81)

您可以使用:selected选择器和内联$.map()功能作为链条的一部分。

$("option:selected").map(function(){ return this.value }).get().join(", ");

答案 1 :(得分:22)

将值添加到数组并使用join创建字符串:

var items = [];
$('#ps-type option:selected').each(function(){ items.push($(this).val()); });
var result = items.join(', ');

答案 2 :(得分:10)

在多选元素上,val元素的select命令将返回所选选项值的数组。如果不存在任何值,则使用元素的文本:

var output = $("#ps-type").val().join(', ');

更新但是,如果没有选定的选项val(),则返回null而不是空数组。解决这个问题的一种方法:

var output = ($("#ps-type").val() || []).join(', '); 

您可以在this demo I put together中使用它。

来自the docs

  

对于<select multiple="multiple">元素,.val()方法返回一个包含每个选定选项的数组。

答案 3 :(得分:2)

这样的事情可以解决问题:

var result = "";
$('#ps-type option:selected').each(function(i, item){ 
   result += $(this).val() + ", ";
});

答案 4 :(得分:2)

var list = "";
$('#ps-type option:selected').each(function(){
  list += this.value + ", ";
});
return list.substr(0, list.length - 2);

答案 5 :(得分:1)

你走了:

var result = new Array();

$("#ps-type option:selected").each(function() {
    result.push($(this).val());
});

var output = result.join(", ");

答案 6 :(得分:0)

&#13;
&#13;
$(function() {
        $('#colorselector').change(function(){
            $('.colors').hide();
            $('#' + $(this).val()).show();
        });
    });
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<Select id="colorselector" multiple="multiple" size="2">
   <option value="red">Red</option>
   <option value="yellow">Yellow</option>
   <option value="blue">Blue</option>
</Select>
<div id="red" class="colors" style="display:none"> red... </div>
<div id="yellow" class="colors" style="display:none"> yellow.. </div>
<div id="blue" class="colors" style="display:none"> blue.. </div>
&#13;
&#13;
&#13;

答案 7 :(得分:0)

试试这个:

    var List = new Array();
    $('#ps-type option:selected').each(function () {
       if ($(this).length) {
              var sel= {
                  name: $this.text()
              }
       }
       List.push(sel);
    });
    var result = List.join(', ');

答案 8 :(得分:0)

最简单的解决方案

您可以只使用 .val() ,如:

console.log( $('#ps-type').val() );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select id="ps-type" name="ps-type" multiple="multiple" size="5">
  <option selected>Residential - Wall Insulation</option>
  <option>Residential - Attic /Crawl Space Insulation</option>
  <option>Residential - Foundation Insulation</option>
  <option>Residential - Exterior Roof System</option>
  <option selected>Commercial - Wall Insulation</option>
  <option>Commercial - Air Barrier System (Walltite)</option>
  <option selected>Commercial - Roof System</option>
</select>