1

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

我不想做 ajax 提交,我想要一个普通的帖子提交,我的表单处理程序中有重定向。我怎样才能提交这两个,并获得在服务器端有意义的值。就像是$_POST['form1]['whatever'] $_POST['form2]['thing']

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

4

3 回答 3

3

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

这正是你必须做的。如果没有代码示例,答案就不会太多,所以给你。

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

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

$("#form2 :input").attr("name",function(name){
    return name + "_form2";
}).appendTo("#form1")[0].submit();
于 2012-11-16T22:58:29.583 回答
1

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

于 2012-11-16T23:04:04.230 回答
0

您应该能够在 PHP 中将两个表单字段合并为一个表单。如果您的代码不允许这样做,那么它的形状一定很糟糕。

如果您使用简单的脚本,您应该能够将表单切割成生成字段的部分,而其他部分生成表单轮廓,或者作为单独的脚本,或者只是作为单独的函数。

IE:

<?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>';
    }

?>

然后只需将$paramsform1和form2组合起来即可获得最终形式。

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

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

用js的方式在客户端组合表单会在代码的维护和演进中变成很多问题,并带来很多问题(安全性不是最不重要的)。

于 2012-11-17T00:06:13.897 回答