第二个表单的提交按钮在页面上提交第一个表单

时间:2018-03-16 03:48:26

标签: php html html5 html-form

我正在尝试在同一页面上包含两个表单。下面比我想做的要简单得多,但它也有同样的错误。

<div class="content-form">

<form id="b_form" name="form_b" class="form" method="post"> 
</form>
    
<form id="a_form" name="form_a" class="form" method="post"> 
<input type="number" id="field_quantity" name="quantity" class="form-control" />
<button type="submit" form="a_form" name="__action" value="new_shipment" class="btn btn-submit btn-success">Submit</button>
</form>

</div>

代码段实际上是一个智能模板,可以包含在更大的页面中。我认为这个问题包含在这段代码中,因为页面的其余部分都有div标签,所以它不像我有一个嵌套的表单。

问题:当我点击提交按钮时,我回显处理请求的php页面上的$ _POST对象。即使填写了数量字段,我仍然会得到{"__action":"new_shipment"}作为$ _POST的内容。

如果我交换两个表单的顺序,那么$ _POST确实包含数量字段。为什么第二种形式的提交按钮不提交第二种形式的字段?我该如何解决?

1 个答案:

答案 0 :(得分:0)

因此,有不同的方法来处理这个问题。我去了http://phpfiddle.org,单击了窗口选项卡,选择了HTML表单并粘贴了你的html并在第一个表单上添加了一些输入:

<form id="b_form" name="form_b" class="form" method="post"> 
    <input type="number" id="field_quantity_b" name="quantity" class="form-control" />
    <button type="submit" form="b_form" name="form_b_btn" value="new_shipment" class="btn btn-submit btn-success">Submit</button>
</form>

<form id="a_form" name="form_a" class="form" method="post"> 
    <input type="number" id="field_quantity_a" name="quantity" class="form-control" />
    <button type="submit" form="a_form" name="form_a_btn" value="new_shipment" class="btn btn-submit btn-success">Submit</button>
</form>

然后我添加了这个

<?php

    if($_POST && isset($_POST['form_b_btn'])) {
        echo "FORM B ";
        print_r($_POST);
    }

    if($_POST && isset($_POST['form_a_btn'])) {
        echo "FORM A ";
        print_r($_POST);
    }
?>

您需要提交按钮名称的不同值。然后当您检查$ _POST时,验证提交的表单。还有其他方法,例如指定不同的操作,然后使用不同的文件来处理它们。这可能会对您有所帮助:How to place two forms on the same page?