我正在尝试使用jquery为项目动态添加字段。我的问题是,当我将表单发送到处理脚本并在$ _POST ['item']上执行print_r()时,它只列出最后一个数组...
这是我的代码:
<div class="itemAdd row">
<div class="span4">
<p>Item Number: <br /><input class="span4" type="text" name="item[itemNumber]" /></p>
<p>Status: <br />
<select name="item[status]" class="span4">
<option value="enabled" selected="selected">Enabled</option>
<option value="disabled">Disabled</option>
<option value="damaged">Damaged</option>
</select>
</p>
</div>
<div class="span4">
<p>Item Notes:<br /><textarea class="span4" style="height:100px;" name="item[notes]"></textarea></p>
</div>
<div class="clearfix"></div>
<hr />
</div>
此按钮可添加新字段:
<a href="#" class="btn btn-small btn-primary" id="addItem"><i class="icon-plus icon-white"></i> Add Item</a>
以下是添加新字段的jquery:
<script>
//Add Items
$('a#addItem').on('click', function(event) {
event.preventDefault();
$('#productItems').append('<div class="itemAdd row"><div class="span4"><p>Item Number: <br /><input class="span4" type="text" name="item[itemNumber]" /></p><p>Status: <br /><select name="item[status]" class="span4"><option value="enabled" selected="selected">Enabled</option><option value="disabled">Disabled</option><option value="damaged">Damaged</option></select></p></div><div class="span4"><p>Item Notes:<br /><textarea class="span4" style="height:100px;" name="item[notes]"></textarea></p></div><div class="clearfix"></div><hr /></div>');
});
答案 0 :(得分:2)
您在表单字段中强制使用数组键,等等:
... name="item[itemNumber]" ...
itemNumber不是JS var,它是你附加的html blob中的文字html /属性文本。也许你的意思更像是
... name="item[' + itemNumber + ']" ...
代替。即使只是item[]
也允许PHP自动为您分配数组键。但就目前而言,PHP将为您创建一个数组,但由于您的所有字段都使用了SAME密钥名称,因此您将不断覆盖值并最终只使用表单中的最后一个字段名称/密钥对。
答案 1 :(得分:2)
您在html中使用数组,但索引是一个字符串:
item[itemNumber]
所以每个项目都会覆盖前一个项目。
您可以将其更改为:
itemNumber[]
和
itemNote[]
或者,如果您有数字ID,则可以使用它。