Par*_*ots 826
您可以为每个输入赋予不同的值并保持相同的名称:
<input type="submit" name="action" value="Update" />
<input type="submit" name="action" value="Delete" />
Run Code Online (Sandbox Code Playgroud)
然后在代码中检查以查看触发的内容:
if ($_POST['action'] == 'Update') {
//action for update here
} else if ($_POST['action'] == 'Delete') {
//action for delete
} else {
//invalid action!
}
Run Code Online (Sandbox Code Playgroud)
唯一的问题是你将逻辑绑定到输入中的文本.您也可以为每个人提供一个唯一的名称,并检查$ _POST是否存在该输入:
<input type="submit" name="update_button" value="Update" />
<input type="submit" name="delete_button" value="Delete" />
Run Code Online (Sandbox Code Playgroud)
并在代码中:
if (isset($_POST['update_button'])) {
//update action
} else if (isset($_POST['delete_button'])) {
//delete action
} else {
//no button pressed
}
Run Code Online (Sandbox Code Playgroud)
Gre*_*reg 406
如果您为每个人命名,则点击的名称将作为任何其他输入发送.
<input type="submit" name="button_1" value="Click me">
Run Code Online (Sandbox Code Playgroud)
kir*_*ril 96
更好的解决方案包括使用按钮标签提交表单:
<form>
...
<button type="submit" name="action" value="update">Update</button>
<button type="submit" name="action" value="delete">Delete</button>
</form>
Run Code Online (Sandbox Code Playgroud)
这种方式对国际化和多种显示语言没有任何不便(在前一种解决方案中,按钮的标签也是发送给服务器的值).
Leo*_*Leo 75
有一个新的HTML5方法,formaction
属性:
<button type="submit" formaction="/action_one">First action</button>
<button type="submit" formaction="/action_two">Second action</button>
Run Code Online (Sandbox Code Playgroud)
显然这在IE9及更早版本中不起作用,但对于其他浏览器,你应该没问题(参见:w3schools.com HTML <button>编队属性).
就个人而言,我通常使用Javascript远程提交表单(以获得更快的感知反馈),这种方法作为备份.在两者之间,唯一未被覆盖的人是IE <9且禁用Javascript.
当然,如果您基本上采用相同的操作服务器端,无论按下哪个按钮,这可能都是不合适的,但通常如果有两个用户端操作可用,那么它们也将映射到两个服务器端操作.
编辑:
正如Pascal_dher在评论中所指出的,该属性也可以在<input>
标签上使用.
Pet*_*ley 26
这非常容易测试
<form action="" method="get">
<input type="submit" name="sb" value="One">
<input type="submit" name="sb" value="Two">
<input type="submit" name="sb" value="Three">
</form>
Run Code Online (Sandbox Code Playgroud)
只需将其放在HTML页面中,单击按钮,然后查看URL
Mev*_*mir 20
<form>
<input type="submit" value="Submit to a" formaction="/submit/a">
<input type="submit" value="submit to b" formaction="/submit/b">
</form>
Run Code Online (Sandbox Code Playgroud)
小智 16
使用格式HTML属性
<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>
Run Code Online (Sandbox Code Playgroud)
Joa*_*kim 11
也许建议的解决方案在2009年工作,但我已经测试了所有这些赞成的答案,没有人在任何浏览器中工作.
只有我找到工作的解决方案是这样的:(但我认为使用它有点难看)
<form method="post" name="form">
<input type="submit" value="dosomething" onclick="javascript: form.action='actionurl1';"/>
<input type="submit" value="dosomethingelse" onclick="javascript: form.action='actionurl2';"/>
Run Code Online (Sandbox Code Playgroud)
Sha*_*are 10
处理多个提交按钮的最佳方法是在服务器脚本中使用switch case
<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">Java Script</button>
<button name="subject" type="submit" value="jquery">jQuery</button>
</form>
Run Code Online (Sandbox Code Playgroud)
服务器代码/服务器脚本 - 您提交表单的位置:
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;
}
?>
Run Code Online (Sandbox Code Playgroud)
资料来源:W3Schools.com
一个 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>
Run Code Online (Sandbox Code Playgroud)
使用相同的表单来添加新用户和登录用户。
小智 7
您在一个表单示例中形成多个提交按钮
<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">
Run Code Online (Sandbox Code Playgroud)
请注意,如果您有多个提交按钮并按回车键(ENTER 键),则键盘上的默认按钮值将是 DOM 上的第一个按钮。
例子:
<form>
<input type="text" name="foo" value="bar">
<button type="submit" name="operation" value="val-1">Operation #1</button>
<button type="submit" name="operation" value="val-2">Operation #2</button>
</form>
Run Code Online (Sandbox Code Playgroud)
如果您在此表单上按 ENTER 键,将发送以下参数:
foo=bar&operation=val-1
Run Code Online (Sandbox Code Playgroud)
由于您未指定要使用的服务器端脚本编写方法,因此,我将为您提供一个使用CherryPy的适用于Python的示例(尽管它也可能对其他上下文有用):
<button type="submit" name="register">Create a new account</button>
<button type="submit" name="login">Log into your account</button>
Run Code Online (Sandbox Code Playgroud)
您可以使用名称(使用<button>
标记代替<input>
)来代替使用值来确定按下了哪个按钮。这样,如果您的按钮碰巧具有相同的文本,则不会造成问题。所有表单项的名称(包括按钮)都作为URL的一部分发送。在CherryPy中,每个参数都是执行服务器端代码的方法的参数。因此,如果您的方法仅具有**kwargs
其参数列表(而不是乏味地键入每个表单项的每个名称),那么您可以检查查看按下了哪个按钮,如下所示:
if "register" in kwargs:
pass #Do the register code
elif "login" in kwargs:
pass #Do the login code
Run Code Online (Sandbox Code Playgroud)
定义name
为array
。
<form action='' method=POST>
(...) some input fields (...)
<input type=submit name=submit[save] value=Save>
<input type=submit name=submit[delete] value=Delete>
</form>
Run Code Online (Sandbox Code Playgroud)
服务器代码示例(PHP):
if (isset($_POST["submit"])) {
$sub = $_POST["submit"];
if (isset($sub["save"])) {
// save something;
} elseif (isset($sub["delete"])) {
// delete something
}
}
Run Code Online (Sandbox Code Playgroud)
elseif
非常重要,因为如果没有解析,两者都会被解析。请享用。