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 変数ではありません。追加している html blob のリテラル html/attribute テキストです。おそらく、あなたはもっと似たようなことを意味していました

... 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 に答える