提交多个表格作为一个

时间:2012-11-16 22:55:57

标签: php javascript jquery forms

我在页面上有两个表单。对于用户来说,它看起来像1个表单,我实际上希望它是一个表单。但是我试图重用代码和包含东西的方式,我无法避免源代码中的两种形式......试图作为一种形式。

我不想做ajax提交,我想要一个正常的帖子提交,我的表单处理程序有重定向。如何提交这两者,并获得在服务器端有意义的值。类似于$_POST['form1]['whatever'] $_POST['form2]['thing']

也许从表单2中获取所有输入,用前缀重命名所有输入,并将它们附加到表单1?我无法找到一种非混乱的方式。我认为我不需要代码,只是一个计划。最糟糕的想法获胜。

3 个答案:

答案 0 :(得分:3)

  

也许从表单2中获取所有输入,用a重命名所有输入   前缀,并将它们附加到表单1?

这正是你必须要做的。如果没有代码示例,那么答案就不会那么多了,所以你走了。

$("#form2 :input").appendTo("#form1")[0].submit()

现在在php中你将$_POST['thing']包含一个包含两个值的数组。或者,您可以重命名form2的所有输入:

$("#form2 :input").attr("name",function(name){
    return name + "_form2";
}).appendTo("#form1")[0].submit();

答案 1 :(得分:1)

您可以尝试使用jQuery.serializeArray()收集一个表单的值,然后生成hidden个输入,其中的名称和值来自存储以前称为jQuery.serializeArray()的结果的变量,并将它们插入到第二个表单中submit形式事件。

答案 2 :(得分:0)

您应该能够在PHP中将两个表单字段合并为一个单独的表单。如果你的代码不允许,它必须是糟糕的形状。

如果您使用的是简单脚本,那么您应该能够将表单剪切为生成字段的部分,以及生成表单轮廓的其他部分,可以是单独的脚本,也可以是单独的函数。

即:

<?php 

    function form_body($params) {
        // here's the code for echoing fields according to $params
    }

    function form($params) {
        // here's the code to build the form properties 
        $f_properties = '....';
        echo '<form '.$f_properties.'>';
        form_body($params);
        echo '</form>';
    }

?>

然后,只需要将form1和form2中的$params组合起来以获得最终形式。

如果您正在使用OOP,可能很容易派生出一个包含两种形式的新类,并让它输出它们的字段。

这是非常简单的建议,但您没有提供任何来源来帮助重构,因此我只能提供模糊/通用的代码示例。

使用js方式在客户端组合表单将变成许多问题,以维护和发展代码,并带来很多问题(安全性并非最不重要)。 /强>