我在页面上有两个表单。对于用户来说,它看起来像1个表单,我实际上希望它是一个表单。但是我试图重用代码和包含东西的方式,我无法避免源代码中的两种形式......试图作为一种形式。
我不想做ajax提交,我想要一个正常的帖子提交,我的表单处理程序有重定向。如何提交这两者,并获得在服务器端有意义的值。类似于$_POST['form1]['whatever']
$_POST['form2]['thing']
也许从表单2中获取所有输入,用前缀重命名所有输入,并将它们附加到表单1?我无法找到一种非混乱的方式。我认为我不需要代码,只是一个计划。最糟糕的想法获胜。
答案 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方式在客户端组合表单将变成许多问题,以维护和发展代码,并带来很多问题(安全性并非最不重要)。 /强>