【问题标题】:Submit button for second form submits first form on page第二个表单的提交按钮在页面上提交第一个表单
【发布时间】:2018-08-25 01:21:46
【问题描述】:

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

<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>

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

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

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

【问题讨论】:

  • 不确定能不能解决问题,但是不需要在表单中指定action属性吗?
  • @RafaelRozon 是的,我只是添加了它以确保。没有区别

标签: php html forms


【解决方案1】:

因此,有不同的方法来处理这个问题。我去了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?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    相关资源
    最近更新 更多