概述
html - 一个表单中的两个提交按钮
我在表单中有两个提交按钮。 如何确定哪个服务器被服务器端?
Alex asked 2019-01-04T20:27:46Z
18个解决方案
741 votes
您可以为每个输入赋予不同的值并保持相同的名称:
然后在代码中检查以查看触发的内容:
if ($_POST['action'] == 'Update') {
//action for update here
} else if ($_POST['action'] == 'Delete') {
//action for delete
} else {
//invalid action!
}
唯一的问题是你将逻辑绑定到输入中的文本。 您还可以为每个人提供一个唯一的名称,并检查$ _POST是否存在该输入:
并在代码中:
if (isset($_POST['update_button'])) {
//update action
} else if (isset($_POST['delete_button'])) {
//delete action
} else {
//no button pressed
}
Parrots answered 2019-01-04T20:28:35Z
342 votes
如果您为每个人命名,则点击的名称将作为任何其他输入发送。
Greg answered 2019-01-04T20:27:54Z
73 votes
更好的解决方案包括使用按钮标签提交表单:
...
Update
Delete
这种方式对国际化和多种显示语言没有任何不便(在前一种解决方案中,按钮的标签也是发送给服务器的值)。
kiril answered 2019-01-04T20:29:03Z
53 votes
有一个新的HTML5方法,属性:
First action
Second action
显然这在IE9及更早版本中不起作用,但对于其他浏览器,你应该没问题(参见:w3schools.com HTML< button> formaction Attribute)。
就个人而言,我通常使用Javascript远程提交表单(以获得更快的感知反馈),并将此方法作为备份。 在两者之间,唯一未被覆盖的人是IE< 9,禁用Javascript。
当然,如果您基本上采用相同的操作服务器端而不管按下哪个按钮,这可能是不合适的,但通常如果有两个用户端操作可用,那么它们也将映射到两个服务器端操作。
编辑:正如Pascal_dher在评论中所指出的,该属性也可以在标签上找到。
Leo answered 2019-01-04T20:29:50Z
26 votes
这非常容易测试
只需将其放在HTML页面中,单击按钮,然后查看URL
Peter Bailey answered 2019-01-04T20:30:18Z
14 votes
MevlütÖzdemir answered 2019-01-04T20:30:34Z
11 votes
也许建议的解决方案在2009年工作,但我已经测试了所有这些赞成的答案,没有人在任何浏览器中工作。
唯一的解决方案我发现工作是这样的:(但我认为使用它有点难看)
Joakim answered 2019-01-04T20:31:02Z
7 votes
处理多个提交按钮的最佳方法是在服务器脚本中使用switch case
Choose your favorite subject:
HTML
CSS
Java Script
jQuery
服务器代码/服务器脚本 - 您提交表单的位置:
demo_form.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
Shailesh Sonare answered 2019-01-04T20:31:47Z
4 votes
既然你没有指定你正在使用的服务器端脚本方法,我会给你一个适用于Python的例子,使用CherryPy(虽然它也可能对其他上下文有用):
Create a new account
Log into your account
您可以使用名称(使用标记而不是),而不是使用该值来确定按下了哪个按钮。 这样,如果您的按钮恰好具有相同的文本,则不会导致问题。 所有表单项的名称(包括按钮)都将作为URL的一部分发送。 在CherryPy中,每个都是执行服务器端代码的方法的参数。 因此,如果您的方法只有**kwargs用于其参数列表(而不是繁琐地键入每个表单项的每个单独名称),那么您可以检查以查看按下了哪个按钮:
if "register" in kwargs:
pass #Do the register code
elif "login" in kwargs:
pass #Do the login code
Shule answered 2019-01-04T20:32:16Z
3 votes
'; //any value to post PHP
Osmar Kozan Jr answered 2019-01-04T20:32:32Z
2 votes
我认为你应该能够读取GET数组中的名称/值。 我认为没有点击的按钮不会出现在该列表中。
John Bubriski answered 2019-01-04T20:32:54Z
2 votes
将elseif定义为array。
(...) some input fields (...)
示例服务器代码(PHP):
if (isset($_POST["submit"])) {
$sub = $_POST["submit"];
if (isset($sub["save"])) {
// save something;
} elseif (isset($sub["delete"])) {
// delete something
}
}
elseif非常重要,因为两者都会被解析。请享用。
Thielicious answered 2019-01-04T20:33:28Z
2 votes
使用格式HTML属性
First name:
Last name:
Submit
Submit to another page
Thirumalmani Lavanyan answered 2019-01-04T20:33:49Z
0 votes
很简单,您可以在不同的提交按钮上更改表单的操作单击。
在document.Ready中试试这个
$(".acceptOffer").click(function () {
$("form").attr("action", "/Managers/SubdomainTransactions");
});
$(".declineOffer").click(function () {
$("form").attr("action", "/Sales/SubdomainTransactions");
});
Slan answered 2019-01-04T20:34:17Z
0 votes
你也可以这样做(我认为如果你有N个输入就很方便)。
然后在服务器端(在我的示例中为PHP),您可以将“row”作为数组读取以获取索引:
$index = key($_POST['row']);
$ _POST ['row']将是一个只包含一个元素的数组,格式为index => 值(例如:'2'=>'某事')。
[http://php.net/manual/en/function.key.php]
Pato answered 2019-01-04T20:34:58Z
0 votes
您还可以使用href属性并发送带有每个按钮附加值的get。 但那时不需要表格
href="/SubmitForm?action=delete"
href="/SubmitForm?action=save"
Jonathan Laliberte answered 2019-01-04T20:35:20Z
0 votes
如果您有两个具有不同功能的提交按钮,则在输入按钮中明确告知提交类型,如:
您无需担心服务器端调用哪个按钮。 分别在每个函数中编写逻辑并调用它们。 他们将在不干扰他人的情况下开展工作。
Jasmin Akther Suma answered 2019-01-04T20:35:48Z
-1 votes
您可以像这样显示按钮:
然后在代码中,您可以使用以下方法获取值:
if request.method == 'POST':
#valUnits = request.POST.get('unitsInput','')
#valPrice = request.POST.get('priceInput','')
valType = request.POST.get('typeBtn','')
(valUnits和valPrice是我从我留下的表单中提取的一些其他值,用于说明)
user3714578 answered 2019-01-04T20:36:22Z
最后
以上就是英俊树叶为你收集整理的html弄多个按钮_html - 一个表单中的两个提交按钮的全部内容,希望文章能够帮你解决html弄多个按钮_html - 一个表单中的两个提交按钮所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复