我正在尝试在同一页面上包含两个表单。下面比我想做的要简单得多,但它也有同样的错误。
<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确实包含数量字段。为什么第二种形式的提交按钮不提交第二种形式的字段?我该如何解决?
答案 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?