我正在处理下面提到的多选下拉菜单
<select class="form-input name="hideLineItemColumns_quote" multiple="true" ">
<option selected="true" value="part_desc">Description</option>
<option selected="true" value="part_number">Product</option>
<option selected="true" value="costEa_line">Cost</option>
</select>
我想要访问值&amp;所有选定选项的文本,并在进一步的逻辑中使用它们。我试过这个
var tempVar = jQuery("Select[@name='hideLineItemColumns_quote'] option:selected").text();
alert(tempVar[0]);
不显示“描述”,而是显示“D”。它将所有三个值组合在一个长字符串中。我有什么想法吗?
谢谢, Nitesh
答案 0 :(得分:1)
tempVar
是一个字符串。所以你正在查看该字符串中的第一个字符D
此外,您选择了所有选项。
也许这就是你的意思:
var tempVar = [];
jQuery("Select[@name='hideLineItemColumns_quote'] option:selected").each(function () {
tempVar.push($(this).text());
});
alert(tempVar[0]);
答案 1 :(得分:0)
您当前的查询是选择所有三个option
元素。当你在这个集合上调用.text()
时,jQuery假设你想要所有三个文本的组合。
如果您想单独处理它们,可以通过.each()
或.map()
进行迭代:
// with .each():
$("select[@name='hideLineItemColumns_quote'] option:selected").each(function(idx, el) {
console.log($(el).text());
});
// with .map():
var options_arr = $("select[@name='hideLineItemColumns_quote'] option:selected").map(function(idx, el) {
return $(el).text();
}); // => ['Description', 'Product', 'Cost']
console.log(options_arr);
答案 2 :(得分:0)
我玩了一下......
var tempVar = [];
$('select[name="hideLineItemColumns_quote"] option:selected').each(function() {
var $option = $(this);
tempVar.push({ text: $option.text(), value: $option.attr('value') });
});
alert(tempVar[0].text);
它的基本功能,就像其他答案之一一样,是制作列表中所选项目的数组。对于每个选定的项目,它会创建一个包含text
和value
属性的小对象,以便您以后可以更直观地访问它们。 (就像在alert()
行中一样);