I have multiple input fields.
<input type='text' size='10' name='firstname' id='firstname' />
<input type='text' size='20' name='lastname' id='lastname' />
<input type='password' size='5' name='password' id='password' />
I want to get all their values into a single array with jQuery. Like this one.
1 => 'Barack',
2 => 'Obama',
3 => '123456'
Existing method val() returns value from first match.
$('#firstname,#lastname,#password').val(); //returns only first name
asked Dec 7, 2009 at 11:13
Simon Perepelitsa
20.7k8 gold badges58 silver badges75 bronze badges
2 Answers 2
This will do:
$('#firstname,#lastname,#password').map(function () {
return this.value;
}).get();
answered Dec 7, 2009 at 11:15
Magnar
28.9k8 gold badges62 silver badges66 bronze badges
Sign up to request clarification or add additional context in comments.
1 Comment
Felix Kling
There is no need to use the
.val() method here, return this.value; will work just fine.I made tiniy plugin for that case:
jQuery.fn.inputs2obj=function (){
var out={};
var arr=this.filter(':input').each(function () {
e=$(this);
out[e.attr('name')]=e.val();
}).get();
return out;
}
Usage example:
inputs=$('form').find(':input').inputs2obj();
Comments
lang-js