【问题标题】:Form with two button submit with different value带有两个按钮的表单以不同的值提交
【发布时间】:2012-02-21 16:27:39
【问题描述】:
<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>

现在如果我点击发送 div ONE 或 div 2 我总是在 $_POST['aaa'] = 'two';

是否可以用两个不同的值提交一个表单?

如果我点击 div 一个提交,我希望收到 $_POST['aaa'] = 'one',如果我点击 div 两个提交,我希望收到 $_POST[ 'aaa'] = '两个'.

我该怎么做?

我可以用这个 PHP 和 jQuery。

编辑: 我不想创建两个表单 - 我不想多次显示两个 &lt;input type="text" name="text"&gt;

编辑:也许我可以改为按钮提交?但是怎么做?

【问题讨论】:

    标签: php javascript jquery html forms


    【解决方案1】:

    看来你真正想做的是在每个按钮中都有一个值,见this,例如:

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

    【讨论】:

    • 通常建议在此处包含答案,而不仅仅是一个链接,以防链接不再有效(就像我现在一样)。
    【解决方案2】:

    你需要两种不同的形式:

    <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 时,仅使用表单中遇到的 LAST 值并提交。

    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");
    }
    

    【讨论】:

    • 这没关系,但我不想在我的页面上显示两次
    • 在提交时,您总是可以使用一些 javascript 将一个输入字段的值复制到两个表单中的另一个隐藏字段中。但是由于您的表单现在是结构化的,所以没有办法解决这个问题。您还可以使用其他技巧,例如为每个字段指定唯一名称,并使用该事实来检测单击了哪个提交按钮,然后仅访问适当的值。
    • 感谢编辑 (+1),但是如果这个提交按钮是例如 20 怎么办?我必须单独检查一下吗?
    • 您的意思是 20 个不同的提交按钮?哎呀,是的,你必须检查每一个。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      试试这个:

      在html中-

          <input id="PreviousButton" value="Previous" type="submit" />
          <input id="NextButton" value="Next" type="submit" />
      
          <input id="Button" name="btnSubmit"  type="hidden" />
      

      在欢乐中-

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-25
        • 2020-03-20
        相关资源
        最近更新 更多