0

我正在尝试使用 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>');

});

4

2 回答 2

2

您在表单字段等中强制使用数组键:

... name="item[itemNumber]" ...

itemNumber 不是 JS var,它是您要附加的 html blob 中的文字 html/属性文本。也许你的意思更像

... name="item[' + itemNumber + ']" ...

反而。甚至只是item[]允许 PHP 自动为您分配数组键。但就目前而言,PHP 将为您创建一个数组,但由于您的所有字段都使用相同的键名,您将不断地覆盖值并最终只得到表单中的最后一个字段名/键对。

于 2013-03-07T18:09:31.693 回答
2

您在 html 中使用数组,但索引是一个字符串:

item[itemNumber]

所以每一项都会覆盖前一项。

您可以将其更改为:

itemNumber[]

itemNote[]

或者,如果您有数字 ID,则可以使用它。

于 2013-03-07T18:09:42.070 回答