具有两个不同值的提交按钮的表单

8
<form action="here.php" method="POST">
<input type="text" name="text">

<div id="one">
   <input type="hidden" name="aaa" value="one">
   <input type="submit" value="Send">
</div>

<div id="two">
   <input type="hidden" name="aaa" value="two">
   <input type="submit" value="Send">
</div>

</form>

现在,如果我点击ONE或TWO div的发送按钮,则始终会在$_POST['aaa'] = 'two';中。
是否可能创建一个具有不同值的两个提交的表单?
如果我点击div one提交,我想要接收$_POST['aaa'] = 'one',如果我点击div two提交,我想要接收$_POST['aaa'] = 'two'
我该怎么做?
我可以使用PHP和jQuery进行此操作。
编辑:我不想创建两个表单-不想显示两次<input type="text" name="text"> 编辑:也许我可以代替提交按钮? 但如何?
4个回答

15

看起来你实际想要做的是在每个按钮中都有一个值,请查看这里的示例:

<form action="demo_form.asp" method="get">
  Choose your favorite subject:
  <button name="subject" type="submit" value="fav_HTML">HTML</button>
  <button name="subject" type="submit" value="fav_CSS">CSS</button>
</form>

4
通常建议在此处包含答案,而不仅仅是链接,以防链接无法使用(就像我现在的情况)。 - Tom Collins

4
你需要两种不同的表单:
<div id="one">
   <form ...>
      <input type="hidden" name="aaa" value="one">
      <input type="submit" value="Send">
   </form>
</div>

<div id="two">
    <form ...>
       <input ...>
       <input ...>
    </form>
</div>

通常的做法是当两个字段具有相同的 name 时,只使用表单中遇到的最后一个值并提交该值。

PHP确实有一个特殊的表示法(name="aaa[]")可以允许使用相同的名称提交多个值,但这在这里没有任何帮助,因为这将提交所有 aaa 的值,而不仅仅是最接近提交按钮的那个值。


HTML表格:

<form ...>
<input type="text" name="textfield">

<div id="one">
   <input type="hidden" name="one_data" value="aaa" />
   <input type="submit" name="submit_one" value="Submit" />
</div>

<div id="two">
   <input type="hidden" name="two_data" value="bbb" />
   <input type="submit" name="submit_two" value="Submit" />
</div>
</form>

服务器端:

if (isset($_POST['submit_two'])) {
    $data = $_POST['two_data'];
} else if (isset($_POST['submit_one'])) {
    $data = $_POST['one_data'];
} else {
    die("Invalid submission");
}

这个没问题,但我不想在页面上显示两次 <input type="text" name="text">。 - Mark Fondy
当提交表单时,您可以始终使用一些JavaScript将一个输入字段的值复制到另一个隐藏字段中的两个表单中。但是,由于您的表单目前的结构,这是无法避免的。还有其他技巧可用,例如为每个字段提供唯一名称,并利用该事实来检测单击了哪个提交按钮,然后仅访问适当的值。 - Marc B
谢谢编辑(+1),但是如果这个提交按钮例如为20,我必须单独检查吗? - Mark Fondy
你的意思是有20个不同的提交按钮?哎呀,是的,你得检查每一个。 - Marc B

3
尝试这个:
在HTML中-
    <input id="PreviousButton" value="Previous" type="submit" />
    <input id="NextButton" value="Next" type="submit" />

    <input id="Button" name="btnSubmit"  type="hidden" />

在jQuery中-

        $("#PreviousButton").click(function () {
            $("#Button").val("Previous");
        });

        $("#NextButton").click(function () {
            $("#Button").val("Next");
        });

然后您可以在表单结果中查看“按钮”包含的内容。

3

不要显示两个提交按钮,您可以显示一个带有两个选项和一个提交按钮的单选列表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接