0

我有多个表格,每个表格都有多个复选框。对于所有表单,在页面下方的某个位置提供了一个提交,以便在单击时预览所有选中的信息

<form name="a1" action="start.php" method="post"> 
<input type="checkbox" id="add" name="check_list[]" value="x1">x1 
<input type="checkbox" id="add" name="check_list[]" value="x2">x2
<input type="checkbox" id="add" name="check_list[]" value="x3">x3
</form>

<form name="a2" action="start.php" method="post"> 
<input type="checkbox" id="add" name="check_list[]" value="y1">y1 
<input type="checkbox" id="add" name="check_list[]" value="y2">y2
<input type="checkbox" id="add" name="check_list[]" value="y3">y3
</form>

<form name="a3" action="start.php" method="post"> 
<input type="checkbox" id="add" name="check_list[]" value="z1">z1 
<input type="checkbox" id="add" name="check_list[]" value="z2">z2
<input type="checkbox" id="add" name="check_list[]" value="z3">z3
</form>

<div> <input type="submit" value="preview" onclick="addForm()"> </div>

validateform在哪里

<script type="text/javascript">function addForm(){
document.forms["a1"].submit();
document.forms["a2"].submit();
document.forms["a3"].submit();
}

并且start.php

<?php
if(!empty($_POST['check_list'])) {
    foreach($_POST['check_list'] as $check) {
            echo $check."<br/>"; 
    }
}
?>

问题是无法通过函数附加所有表单数据addForm() 请帮助我了解如何显示所有复选框信息,这些信息取自所有使用 PHP 的表单

4

6 回答 6

2

当您在第一个表单“a1”上调用提交函数时,您会自动将数据发送到start.php,而其他两个表单将不会被提交。最佳解决方案:ajax

XMLHTTPRequest 允许您在不离开页面的情况下发布表单并获得回复,您可以将所有三个表单提交的结果组合在一起并显示它们

于 2012-04-13T13:57:50.727 回答
1

如果您是相关 HTML 代码的作者,我建议您重构代码并仅创建一个包含所有复选框提交按钮的表单。如果是样式给您带来困扰,您可以简单地将输入元素放置在适当的<fieldset>元素中。

否则,如果您遇到了不是您编写的 HTML 代码,我建议您执行以下操作(尽管这确实不是一个很好的解决方案):

编辑addForm()函数以在文档的某处创建第四个<form>元素,并将其样式设置为display: none;. 然后将以前表单中的所有复选框附加或克隆到这个新表单,然后提交。这应该为您提供一组复选框,您可以在 PHP 端处理这些复选框,就像初始 HTML 代码编写正确时一样。

于 2012-04-13T14:00:31.773 回答
1

以这种方式一次提交多个表格是不可能的。如果您想采用这种方法,则需要使用 AJAX,因为这是让浏览器维护多个活动请求的唯一方法。

但是,查看代码,我看不出您需要多个表单的任何理由。你应该能够简单地做到这一点:

<form name="a1" action="start.php" method="post"> 
  <input type="checkbox" id="add" name="check_list[]" value="x1">x1 
  <input type="checkbox" id="add" name="check_list[]" value="x2">x2
  <input type="checkbox" id="add" name="check_list[]" value="x3">x3
  <input type="checkbox" id="add" name="check_list[]" value="y1">y1 
  <input type="checkbox" id="add" name="check_list[]" value="y2">y2
  <input type="checkbox" id="add" name="check_list[]" value="y3">y3
  <input type="checkbox" id="add" name="check_list[]" value="z1">z1 
  <input type="checkbox" id="add" name="check_list[]" value="z2">z2
  <input type="checkbox" id="add" name="check_list[]" value="z3">z3
  <div><input type="submit" value="preview"></div>
</form>

...您甚至不需要任何 Javascript。

于 2012-04-13T13:54:23.110 回答
0

对于提交多个表单,您有两种解决方案:

1) 使用 Ajax 请求 2) 将所有信息附加到最终表单中并提交,为此您可以简单地使用 jQuery 或 javascript。

于 2012-04-13T14:02:34.143 回答
0

如果您希望所有数据都转到 start.php,您应该只使用一个表单。

旁注:您不应该将输入的 id 属性全部设置为“add”。id 应该是唯一的。

于 2012-04-13T13:54:50.833 回答
0

如果您必须为此提供多种形式,就像您在评论中声明的那样,那么您需要更广泛的 javascript。

一个表单提交 = 一个 http 请求,3 个不起作用,但是您可以做的是绑定所有这些表单,因此当提交一个表单时,您可以收集所有表单中所有输入的数据并序列化该批次,然后将其作为获取请求。请记住禁用默认行为,以便表单不会这样提交。

或者,如果您必须有一个 POST 请求,请创建一个临时表单并在其中创建具有正确值的输入,然后提交该表单。

于 2012-04-13T13:57:06.417 回答