1

動的に生成されたフィールドを含むフォームがあります。ユーザーが追加したフィールドの数に応じて、送信されたフォームに任意の数のフィールドを含めることができます。これは、動的に生成しているフィールドの種類を知るために参照できる JSFIDDLE です。JSFIDDLE へのリンク

この JSFIDDLE と私のプロジェクトの唯一の違いは、1 つのセットで 2 つのドロップダウンと 2 つの入力フィールドを生成する代わりに、1 つのセットで 3 つのドロップダウンと 1 つの入力フィールドを生成していることです。生成できるセットの数は、ユーザーが jsfiddle のドロップダウンから選択できるようになった時点で最大 15 です。

知る必要があるのは、ユーザーが 7 セットを生成した場合、PHP を使用してこのフォームのデータを処理し、データベースに送信する必要があるため、各フィールドの名前をどのように知ることができるかということです。

4

2 に答える 2

3

jQueryコードはすでにフィールドに明示的に名前を付けています。例えば:

$("<input>").attr("name", "a").appendTo(newDiv);

これにより、次の名前の入力が作成されますa

<input name="a" />

jQueryは、動的に作成された各入力に同じ名前を付けます。同じ名前の3つのフィールドを含む次のフォームを送信すると、サーバーはを受け取りa=value1&a=value2&a=value3ます。

<form>
    <input name="a" value="value1" />
    <input name="a" value="value2" />
    <input name="a" value="value3" />
    <input type="submit" />
</form>

これはほとんどのサーバーテクノロジーで機能しますが、PHPでは機能しません。PHPは、既存の値を最後の値で上書きします。aしたがって、 PHPでの値を調べると、が表示されるだけvalue3です。ただし、良いニュースは、入力名を少し変更して、PHPにすべての値を認識させることができることです。PHPでは、入力名に角かっこを追加すると(name="a"になりますname="a[]")、PHPは値を配列に解析します。したがって、次のわずかに変更された形式の場合:

<form>
    <input name="a[]" value="value1" />
    <input name="a[]" value="value2" />
    <input name="a[]" value="value3" />
    <input type="submit" />
</form>

PHPでの値を見ると、、、、およびaを含む値の配列が得られます。したがって、名前の末尾に角かっこを使用するようにjQueryコードを変更するだけです。value1value2value3

$("<input>").attr("name", "a[]").appendTo(newDiv);
于 2012-10-05T18:57:49.740 に答える
3

これを見てください。各入力の最後に変数が追加されるため、入力を追跡できます。

Edit1:名前はそのままになります。

行 1 - 入力 1_1、入力 2_1、入力 3_1、入力 4_1

行 2 - 入力 1_2、入力 2_2、入力 3_2、入力 4_2 ... など

Edit2:このjsfiddleは、追加された最新の行を削除します。

于 2012-10-05T18:28:31.027 に答える