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 - 一个表单中的两个提交按钮相关推荐

  1. php两个编辑框一个提交按钮,一个表单中的两个提交按钮

    白衣非少年 您可以为每个输入提供不同的值,并保持相同的名称:然后在代码检查中查看哪个触发了:if ($_POST['action'] == 'Update') { //action for updat ...

  2. MVC中一个表单实现多个提交按钮(一个action搞定添删改)

    默认情况下,一个表单只能有一个提交事件,这不难理解,但有时我们需要有多个实现,早在ASP时代就可以实现这个功能,难道到了MVC时代后,功能削减了?当然不是,这和MVC本身有关,微软在这方面比较提倡一个 ...

  3. 表单中去掉重置和提交按钮和搜索框

    去掉重置和提交按钮 <ProFormsubmitter={{// 配置按钮文本searchConfig: {resetText: '重置',submitText: '提交',},// 配置按钮的 ...

  4. 一种形式的两个提交按钮

    我在表单中有两个提交按钮. 我如何确定哪一个被击中服务器端? #1楼 更好的解决方案包括使用按钮标签提交表单: <form>...<button type="submit& ...

  5. HTML一个form表单中有两个(多个)submit,后台如何区分(纯HTML实现,无需javascript)

    一个表单中有时可能会有多个Submit元素,如何在后台区分哪个按钮被点击呢? 网上很多人说用javascript,写一个长长的函数,点击不同的按钮提交不同的数据:还有的说用多个表单:其实完全不需要这么 ...

  6. 微信小程序解决微信模板消息发送之form表单中有多个submit 按钮

    (由于现在本人现在知识学浅,其中有任何问题,请见谅并指正!!!) 在制作微信小程序过程中,想要发送模板消息,但是遇到一个form表单里面有两个提交按钮,这时候要区别他们,一遍后续操作: 在这里我的处理 ...

  7. mysql 查询两个字段相同的数据_sql语句如何查询一个表中某两个字段的相同数据?...

    查询一个表中某两个字段的相同数据代码是:Select Name,ID From A group by Name,ID having count (*)>1. 结构化查询语言(Structured ...

  8. html表单按钮颜色修改,当表单有效时更改提交按钮颜色

    我希望按钮在表单有效时更改颜色,而不必点击任何内容或调用某个函数(如单击提交按钮).只要表格有效,按钮应该变成蓝色,我无法理解这一点,任何帮助都将不胜感激.当表单有效时更改提交按钮颜色 HTML: E ...

  9. submit按钮html,html的两种提交按钮submit和button

    转自:http://baiying.blog.51cto.com/1068039/1319784 html按钮有两种: 和登录 这两种在页面上看起来好像一样没什么区别,但是这两种是有区别的. 1,如果 ...

  10. 表单中的重置与取消按钮

    Article copyright by Jakob Nielsen Jakob Nielsen版权所有 作者:Jakob Nielsen 译者:UCD翻译小组,Link 原文地址:http://ww ...

最新文章

  1. ORM对mysql数据库中数据进行操作报错解决
  2. phpinfo查看可以解析的后缀_配置nginx,Apache支持pathinfo模式-什么是phpinfo模式
  3. 一个大数据排序问题的巧妙解法
  4. tp5.0 根据经纬度 获取附近信息_php根据前端传递的经纬度获取区域地址信息
  5. apereo cas mysql_Apereo CAS 5.0.X 默认提供的数据库认证的四种方式
  6. linux时间格式怎么写,linux基础--时间格式
  7. 在普通类中调用service
  8. 虚拟机的网络连接模式
  9. 操作系统大内核和微内核_操作系统中的内核类型
  10. Python笔记-解决开启Fiddler后Requests存在SSLError问题
  11. 华为大数据战略_任正非:华为应抓住“大数据”机遇 抢占战略制高点
  12. sublime php code sniffer,mac下sublime text3的php错误提示插件php code sniffer安装后,无法显示php错误...
  13. distpicker.js 三级联动,修改地址时设置默认值
  14. 配对碱基链(C语言)
  15. 同一个PDF如何同时在两个窗口并排显示?
  16. 【exp】virtualbox 安装增强功能失败问题解决(vbox虚拟机, Ubuntu)
  17. 求组合数(不同类型的组合数C++)
  18. 地震桌面演练计算机模拟,地震应急处置演练平台环境编辑器及导演组客户端的设计与实现...
  19. M2固态硬盘和普通硬盘相比有什么区别
  20. 计算机主板有没有寿命,主板能用几年_主板的使用寿命是多久图文教程

热门文章

  1. 【spring boot】application.properties官方完整文档【参考使用】
  2. Springboot集成通用Mapper与Pagehelper,实现mybatis+Druid的多数据源配置
  3. Spring和ThreadLocal
  4. 安全专家:70GB财务数据被僵尸网络盗窃
  5. slackware简介
  6. 3.算法通关面试 --- 哈希表和集合
  7. 4.PHP核心技术与最佳实践 --- 数据库(队列)
  8. 14.http 304优化,了解客户端缓存
  9. 4.php 注册树模式
  10. 2.2 Zend_Controller 基础