Reputation: 1046
So everywhere I looked everybody says that to output values of selected options in a multiple select element one should use something like the following $('#selid :selected').val()
and that in such case val() will return an array of values. Well, I can't replicate this behaviour. As far as I can tell such code returns just the first selected value. Here's a quick jsfiddle snippet that demonstrates that.
Notice that using each to iterate through $('#selid :selected')
does work, but calling val() on that array does not produce an array of values as far as I can tell. In fact, calling $('#selid :selected').val().each(...
results in an error message.
So, am I doing something wrong or has this behavior been changed at some point?
Upvotes: 1
Views: 9146
Reputation: 360056
"in such case val() will return an array of values. Well, I can't replicate this behaviour."
You never need to use :selected
to get the value of a <select>
. This is sufficient:
$('#selid').val()
Demo: http://jsfiddle.net/mattball/WZRmD/
Upvotes: 1
Reputation: 166071
The val
function gets the value of the first element in the set of matched elements. To get the value of multiple selected items, when using the :selected
selector, you need to loop through the set, as you mention in your question.
For more information, read the jQuery API for val()
.
Upvotes: 1