Reputation:
I currently have a Javascript function that clones part of my form (select box) as many times as needed, giving the end user the option of adding as many fields as required. Everything is working fine except that only the hard-coded HTML is sent via POST with my form, the rest are not included. Why is this and how can it be fixed?
Javascript:
$(function()
{
var template = $('#inventoryItems .inventory:first').clone(),
inventoryCount = 0;
var addInventory = function()
{
inventoryCount++;
var inventory = template.clone().find(':input').each(function()
{
var newLabel = "invItem{" + inventoryCount + "]";
$(this).prev().attr('id', newLabel);
$(this).prev().attr('name', newLabel);
}).end()
.attr('id', 'inv' + inventoryCount)
.appendTo('#inventoryItems > fieldset');
};
$('.btnAddInventory').click(addInventory);
});
HTML
<fieldset style="width:62%; float:left; margin-left: 19%;">
<div id="inv1" class="inventory" style="margin-bottom:5px;">
<select name="invItem[0]" id="invItem[0]" style="width:92%;">
<?php
getInventoryOptions($dp_conn, "", $datacenter);
?>
</select>
<input class="btnRemoveInventory" type="button" style="background: url(images/icn_trash.png) no-repeat; cursor:pointer; border: none;">
</div>
</fieldset><div class="clear"></div>
<!-- Add Inventory Button -->
<div style="width:62%; margin:0; padding:0; float: right; margin-right: 19%">
<input class="btnAddInventory" type="button" value="Add Item" style="float: right;">
</div><div class="clear"></div>
</div>
Upvotes: 0
Views: 832
Reputation: 5236
When you are updating your id and name for your inputs you are replacing it with invItem{x]
instead of invItem[x]
.
Upvotes: 1
Reputation: 117334
I guess this:
var newLabel = "invItem{" + inventoryCount + "]";
//---------------------^
should be
var newLabel = "invItem[" + inventoryCount + "]";
Upvotes: 2