2014-04-23 83 views
-1

我有一个问题,当我得到所选选项的值。使用jquery从下拉菜单中获取所选选项的值。

让我解释一下我有一个选项列表:

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

我得到的值,我将它们插入到每个选择的选项一个变量,我把它们放在一个这样的数组:

$("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

使用'$( “选择”)VAL();' – Satpal

+1

你必须为了SELECT元素设置属性'multiple'能够在一次选择多个选项,然后。使用@Satpal的建议,这将返回一个数组 –

+0

可能重复的[jQuery获取特定选项标记文本](http://stackoverflow.com/questions/196684/jquery-get-specific-option-tag-text) – jycr753

回答

2

除了其他的答案(使用多个属性,和使用$(本)),则重新声明在所选选项的每次出现的阵列。尝试之外它声明:

var listValO = new Array(); 

$("select option:selected").each(function() 
{ 
     var idOption = $(this).val(); 
     listValO.push(idOption); 
}); 
+0

Thx它的工作原理! :)和thx为其他人的回应! – jayensen

2

首先,您需要将multiple属性添加到select,以便您可以选择多个选项。其次,你在每个回调中重新声明一个新的数组,所以最后你只会有一个选项。

您应该使用.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(); 
0

您需要添加属性的多个在选择选择多个值:

<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

相关问题