我在一个表单中有两个提交按钮。我如何确定哪一个击中了服务器端?


当前回答

处理多个提交按钮的最佳方法是在服务器脚本中使用切换案例

<form action="demo_form.php" method="get">

    Choose your favorite subject:

    <button name="subject" type="submit" value="html">HTML</button>
    <button name="subject" type="submit" value="css">CSS</button>
    <button name="subject" type="submit" value="javascript">JavaScript</button>
    <button name="subject" type="submit" value="jquery">jQuery</button>
</form>

服务器代码/服务器脚本-你提交表单的地方:

文件demo_form.php

<?php
    switch($_REQUEST['subject']) {

        case 'html': // Action for HTML here
                     break;

        case 'css': // Action for CSS here
                    break;

        case 'javascript': // Action for JavaScript here
                           break;

        case 'jquery': // Action for jQuery here
                       break;
    }
?>

来源:W3Schools.com

其他回答

简单。你可以在不同的提交按钮上点击改变表单的动作。

在文档中试试这个。准备好:

$(".acceptOffer").click(function () {
    $("form").attr("action", "/Managers/SubdomainTransactions");
});

$(".declineOffer").click(function () {
    $("form").attr("action", "/Sales/SubdomainTransactions");
});

我认为您应该能够读取GET数组中的名称/值。我认为没有点击的按钮不会出现在列表中。

您还可以使用href属性并为每个按钮发送带有附加值的get。但那时就不需要填表格了

href="/SubmitForm?action=delete"
href="/SubmitForm?action=save"

一个HTML示例,在不同的按钮点击发送不同的表单动作:

<form action="/login" method="POST">
    <input type="text" name="username" value="your_username" />
    <input type="password" name="password" value="your_password" />
    <button type="submit">Login</button>
    <button type="submit" formaction="/users" formmethod="POST">Add User</button>
</form>

使用相同的表单添加新用户和登录用户。

使用formaction HTML属性(第5行):

<form action="/action_page.php" method="get">
    First name: <input type="text" name="fname"><br>
    Last name: <input type="text" name="lname"><br>
    <button type="submit">Submit</button><br>
    <button type="submit" formaction="/action_page2.php">Submit to another page</button>
</form>