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


当前回答

由于您没有指定使用的服务器端脚本方法,因此我将给出一个适用于PHP的示例

<?php if(isset($_POST["loginForm"])) { print_r ($_POST); // FOR Showing POST DATA } elseif(isset($_POST["registrationForm"])) { print_r ($_POST); } elseif(isset($_POST["saveForm"])) { print_r ($_POST); } else{ } ?> <html> <head> </head> <body> <fieldset> <legend>FORM-1 with 2 buttons</legend> <form method="post" > <input type="text" name="loginname" value ="ABC" > <!--Always use type="password" for password --> <input type="text" name="loginpassword" value ="abc123" > <input type="submit" name="loginForm" value="Login"><!--SUBMIT Button 1 --> <input type="submit" name="saveForm" value="Save"> <!--SUBMIT Button 2 --> </form> </fieldset> <fieldset> <legend>FORM-2 with 1 button</legend> <form method="post" > <input type="text" name="registrationname" value ="XYZ" > <!--Always use type="password" for password --> <input type="text" name="registrationpassword" value ="xyz123" > <input type="submit" name="registrationForm" value="Register"> <!--SUBMIT Button 3 --> </form> </fieldset> </body> </html>

形式

当点击Login -> loginForm

当点击Save -> saveForm

当点击注册->注册表单

其他回答

如果你给每一个名称,点击的将作为任何其他输入发送。

<input type="submit" name="button_1" value="Click me">
<form method="post">
    <input type="hidden" name="id" value="'.$id.'" readonly="readonly"/>'; // Any value to post PHP
    <input type='submit' name='update' value='update' formAction='updateCars.php'/>
    <input type='submit' name='delete' value='delete' formAction='sqlDelete.php'/>
</form>

因为你没有指定你使用的服务器端脚本方法,我将给你一个适用于Python的例子,使用CherryPy(尽管它可能对其他上下文也有用):

<button type="submit" name="register">Create a new account</button>
<button type="submit" name="login">Log into your account</button>

您可以使用名称(带有<button>标记而不是<input>标记),而不是使用值来确定按下了哪个按钮。这样,如果您的按钮碰巧有相同的文本,也不会造成问题。所有表单项(包括按钮)的名称都作为URL的一部分发送。

在CherryPy中,每一个都是执行服务器端代码的方法的参数。因此,如果你的方法只有**kwargs作为参数列表(而不是乏味地输入每个表单项的每个名称),那么你可以检查哪个按钮被按下了,像这样:

if "register" in kwargs:
    pass # Do the register code
elif "login" in kwargs:
    pass # Do the login code

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

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

您可以在一个表单中设置多个提交按钮 例子:

 <input type="submit" name="" class="btn action_bg btn-sm loadGif" value="Add Address" title="" formaction="/addAddress"> 
 <input type="submit" name="" class="btn action_bg btn-sm loadGif" value="update Address" title="" formaction="/updateAddress">