使用jquery从下拉列表中获取所选选项的值。

时间:2014-04-23 10:36:56

标签: javascript php jquery arrays

当我获得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]。

对不起英文错误,如果有的话。我希望你理解我的问题并感谢你将来的回应。

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