动态创建并重复字段集

时间:2011-10-05 17:34:56

标签: php javascript

我有一个PHP表单,默认显示一个“用户详细信息”块。 “用户详细信息”部分包含名字,姓氏和地址等。我需要在单击按钮后重复相同的块,以便用户可以在表单上输入“n”个用户。另外我需要保存MySQL数据库中的所有信息。实现这一目标的最佳方法是什么?请告诉我。我感谢任何帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

我会使用jQuery添加其他表单元素。你需要给每个元素一个不同的'name'属性 - 我会使用name ='user1name'(在下一个用户名字段名='user2name')。如果您需要特定的帮助,请评论我的帖子。当表单提交时,我将使用php在循环结束时使用insert语句遍历每组字段。

PHP是这样的:

for ($i = 1; is_null($_POST['name' . $i]) == false; $i++) {
    $name = $_POST['user' . $i . 'name'];
    // repeat for all your fields

    // do your insert statement here - 1 insert per user created
    mysql_query("INSERT INTO table_name (Name, Address, ...) VALUES ('$name', '$address', ...)");
}

jQuery是这样的:

现有的HTML 此时应该只有1个div = class = user

<div id='fields'>
    <div class='user'>
        <input type='text' name='user1name' />
        <input type='text' name='user2name' />
        ... more elements ...
    </div>
</div>

的jQuery

var userFields = $("div.user").clone();
$(userFields).appendTo("div#fields");
$("div#fields").children("div.user:last").children().each(function() {
    // change names here!
});

这将复制现有字段并将其副本添加到字段div中。它还将为第二组用户字段设置新名称。注意:您只需要设置一次userFields,然后您可以根据需要多次使用$(userFields).appendTo("div#fields");(只要userFields变量在范围内)。

如果您在用户字段中的元素上附加了事件处理程序,请使用$("div.user").clone(true, true);代替$("div.user").clone();