我目前有一个Javascript函数可以根据需要多次克隆表单的一部分(选择框),让最终用户可以根据需要添加任意数量的字段。一切正常,除了只有硬编码的HTML通过POST发送我的表单,其余的不包括在内。为什么这个以及如何解决?
使用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>
答案 0 :(得分:2)
我猜这个:
var newLabel = "invItem{" + inventoryCount + "]";
//---------------------^
应该是
var newLabel = "invItem[" + inventoryCount + "]";
答案 1 :(得分:1)
当您更新输入的ID和姓名时,您将使用invItem{x]
代替invItem[x]
替换它。