Frank W. Frank W. - 5 months ago 8
Ajax Question

adding multiple inputs to array

Hi there I'm running into the following problem:

I have a form that gets loaded with Ajax with a couple of input field that must have the same name. What I'm trying to do is to add the values from the input fields to an array so I can send it with ajax to php. The problem is, I only get the value from the first input (so it doesn't add to the array)

AJAX:

$(target).find('[name]').each(function(index, value){
quantity = $("input[name='item_item_quantity[]']").val();
meters = $("input[name='item_item_meters[]']").val();
data = {siteNumber : siteNumber, itemId : itemId, item_quantity : quantity, meters : meters};

});
$.ajax({
url: url,
type: type,
data: data,
success: function(response) {
console.log(response);
}
});


HTML:

<input name="item_item_quantity[]" type="text" class="input calcInput">
<input name="item_item_quantity[]" type="text" class="input calcInput">
<input name="item_item_quantity[]" type="text" class="input calcInput">

<input name="item_item_meters[]" type="text" class="input calcInput">
<input name="item_item_meters[]" type="text" class="input calcInput">
<input name="item_item_meters[]" type="text" class="input calcInput">


Any help would be great, Thanks!

Answer

$("input[name='item_item_quantity[]']").val(); returns value of first element of a set. You can read it in a manual.

If you want all values from set of elements, iterate this set, for example:

var vals = [];
$("input[name='item_item_quantity[]']").each(function() {
    vals.push($( this ).val());
}); 
Comments