如何在php中获取动态生成的输入字段的值?

时间:2012-08-22 10:12:02

标签: php jquery arrays forms

我正在处理一个表格,其中我有2个字段,可以添加N次。我有2个名为“fieldA”和“fieldB”的字段和一个名为“addrow”的按钮。因此,我多次点击addrow,我在前一个fieldA和fieldB下添加了fieldA和fieldB。所以我可以拥有无​​限的fieldAs和无限的fieldBs。我使用jquery添加行,并在每个字段的名称attr后面追加带有数字的新字段,以使其唯一。因此,第一组字段将命名为fieldA1,fieldB1和第二组将命名为fieldA2,fieldB2等。

这就是我的表单中的部分

enter image description here

这是我的jquery

$(document).ready(function(){
 var $i = 1;
    $('body').on('click','#addrow',function(){
    $('#fieldset').append(
    "Your Friends Name: <br /><input type='text' name='fieldA"+$i+"' /><br /><br />Your Friends Email: <br /><input type='text' name='fieldB"+$i+"' /><br /><br />"
    );
    $i++;
    });
});

现在因为这些字段是使用jquery自动生成的,所以我不知道如何在php中获取字段的值。

在获取字段值后,我也想创建一个数组。

这就是我期望在php数组中保存所有字段的值。

$fieldset = array( 
array("fieldA" => "value of fieldA1","fieldB" => "value of fieldB1"),
array("fieldA" => "value of fieldA2","fieldB" => "value of fieldB2"),
array("fieldA" => "value of fieldA3","fieldB" => "value of fieldB3"),
...
);

2 个答案:

答案 0 :(得分:4)

您的输入必须是数组[],否则您将无法接收数组fieldA[]

你的jQuery应该是这样的:

$(document).ready(function(){
 var $i = 1;
    $('body').on('click','#addrow',function(){
    $('#fieldset').append(
    "Your Friends Name: <br /><input type='text' name='fieldA["+$i+"]' /><br /><br />Your Friends Email: <br /><input type='text' name='fieldB["+$i+"]' /><br /><br />"
    );
    $i++;
    });
});

HTML

Your Friends Name: <br /><input type='text' name='fieldA[0]'  class='name'/><br /><br />
Your Friends Email: <br /><input type='text' name='fieldB[0]' class='email'/><br /><br />

在您的PHP中,您将收到它们

[fieldA] => Array (
                [0] => 
                [1] => 
                [2] => 
            )
[fieldB] => Array ( 
                [0] => 
                [1] => 
                [2] =>
            )

您可以根据需要转换它们

$newArray = array();

for($i=0; $i<count($_POST['fieldA']); $i++){
    $newArray[$i]['fieldA'] = $_POST['fieldA'][$i];
    $newArray[$i]['fieldB'] = $_POST['fieldB'][$i];
}

答案 1 :(得分:0)

如果您使用POST在表单中提交这些字段,则可以执行以下操作:

foreach ($_POST as $key => $value) {
    $fieldset[$key] => $value;
}