当我获得Selected选项的值时,我遇到了问题。
让我解释一下我有一个选项列表:
<select>
<option value='1'>Option1</option>
<option value='2'>Option2</option>
<option value='3'>Option3</option>
<option value='4'>Option4</option>
<option value='5'>Option5</option>
</select>
我得到了值,我将它们插入到每个Selected选项的变量中,然后将它们放在这样的数组中:
$("select option:selected").each(function()
{
var listValO = new Array();
var idOption = $("select option:selected").val();
listValO.push(idOption);
});
如果我只选择一个选定的选项,它可以工作,但当我同时选择多个选项时,each()函数在数组中插入所选选项数量的相同值。
当我点击提交按钮时,数组包含listValO几次相同的值。
<select>
<option selected value='1'>Option1</option>
<option selected value='2'>Option2</option>
<option selected value='3'>Option3</option>
<option>Option4</option>
<option>Option5</option>
</select>
listValO只返回3次[1,1,1]。实际上,它选择了我在数组中点击或想要的第一个[1,2,3]。
对不起英文错误,如果有的话。我希望你理解我的问题并感谢你将来的回应。
答案 0 :(得分:2)
首先,您需要将multiple
属性添加到选择中,以便您可以选择多个选项。其次,你在每个回调中重新声明一个新数组,所以最后你只有一个选项。
您应该使用.val()
代替:
<强>标记:强>
<select multiple>
<option selected value='1'>Option1</option>
<option selected value='2'>Option2</option>
<option selected value='3'>Option3</option>
<option>Option4</option>
<option>Option5</option>
</select>
<强>使用Javascript:强>
var optionsArray = $("select").val();
答案 1 :(得分:2)
除了其他答案(使用多个属性,并使用$(this)),您还会为每个选定选项的出现重新声明数组。尝试在外面宣布:
var listValO = new Array();
$("select option:selected").each(function()
{
var idOption = $(this).val();
listValO.push(idOption);
});
答案 2 :(得分:0)
您需要在select中添加属性倍数以选择多个值:
<select multiple="multiple">
<option selected value='1'>Option1</option>
<option selected value='2'>Option2</option>
<option selected value='3'>Option3</option>
<option>Option4</option>
<option>Option5</option>
</select>
Js代码:您正在迭代选定的选项,您应该迭代选择自己以确保选定的选项仅添加到数组一次。
var listValO = new Array();
$("select").each(function()
{
listValO.push($(this).val());
});
//console.log(listValO) for test purpose
<强> Working Demo 强>