我正在尝试抓取以下选择多个中的所有选定项目,并用逗号分隔它们。代码如下:
<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>
我正在寻找的结果如下:
住宅 - 墙体保温,商业 - 墙体保温,......
答案 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)
$(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;
答案 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>