### [在HTML表单中,formmethod属性用于定义提交的方式](https://www.huociguo.com/article/1926)
**Published:** 2026-10-11T05:03:22
**Author:** 米了
**Excerpt:** 表单是网页前端开发中用来实现用户与服务器之间数据交换的主要手段,在各种场景比如登录注册、信息填写、留言反馈以及…
表单是网页前端开发中用来实现用户与服务器之间数据交换的主要手段,在各种场景比如登录注册、信息填写、留言反馈以及文件上传等地方都有它的身影✨。很多程序员只了解form标签中的method属性,并且不了解formmethod控件所独有的提交方式

HTML formmethod 属性
formmethod是HTML表单特有的一个提交方式属性,它可以分别给提交按钮、重置按钮等设置不同的提交方法,从而打破了整个表单只能有一种方式来提交的限制,并且解决了同一个表单中存在多种提交逻辑的问题。掌握了formmethod的使用方法之后,就可以大大提高表单操作的灵活性,避免出现数据提交错误或参数丢失的情况,在网页前端开发中这也是一个重要的基本功。
## **formmethod的基本概念和主要用途**
formmethod用于控制表单的提交方式,可以应用在submit型按钮、input标签等元素上,并且其优先级高于整个表单中设定的method属性值。即当已经对整个表单规定了某种提交方式之后,还可以用控件上的formmethod属性来改变某个提交按钮的行为模式,实现一个表单多种提交的效果。
此功能可以兼容所有最新的浏览器,包括电脑、手机等设备上的网页,并且不会出现兼容性的问题。与全局方法属性不同的是,它只对局部数据进行更改,而不需要改变整个表格就可以实现每个按钮对应数据提交方式的选择。
## **formmethod有三种合法的值:get、post和put,分别用于不同的场景**
根据W3C官方对于HTML的标准规定,formmethod只有三种合法的方式,并且每一种方式都代表着一个不一样的HTTP提交方法,在不同的使用场合之下有不同的数据传输规则,因此在做程序开发时要根据实际的情况来选择合适的用法。
### **1、formmethod=get:以明文形式传递参数**
get就是formmethod的默认值,也是最常用的表单提交方式之一。如果设置了这个值的话,那么所有的表单数据都会通过URL参数的方式发送给服务器,并且这些参数与网页地址之间用问号隔开,多个参数之间用&相连,在整个过程中都是以明文的形式发送到浏览器地址栏中的。
该方式的特点为:速度快、可缓存、有历史记录保存功能;适合用于**数据量小、无保密要求、查询类场景**,例如关键词搜索、分类筛选、列表展示等等。但是要注意到浏览器URL长度限制的问题,get方法只能传输1KB以内的数据,不适合用来传输大文件的数据,而且明文传输存在信息泄露的风险,因此不能用于账号密码或者手机号码等敏感信息上。
### **2、formmethod=POST:用POST的方式来对表单的数据进行加密和传输**
POST是前端常用的安全传输方法之一,在经过配置之后,表单数据不会被添加到URL中,而是以HTTP请求的形式发送出去,并且也不会显示在浏览器的地址栏上,所以它的安全性得到了很大的提升。
该模式不限制数据的长度,可以处理大量的文本信息或者表格数据,并且能够应对文件上传、大批量数据提交等复杂的情况,所以它最适合用来处理**隐私数据、表单项填写、文件上传**等问题。在一般的开发过程中,用户注册、登录、留言发送以及订单创建等等各种场景都需要把formmethod设置为post来防止数据泄露和传输失败的发生。
### **formmethod=dialog:只能用一个方法来关闭对话框**
dialog 是一种特殊的取值方法,在弹出式表单中用得较多,并且只能用在用HTML dialog标签包裹起来的弹出式表单里。它不向服务器发送任何数据,其主要作用就是当用户点击提交按钮后关闭当前的弹出式表单,并没有进行任何网络请求。
普通的网页表单一般不使用它,在弹出窗口、简单的确认对话框以及本地的交互式弹窗等不需要与服务器进行数据交换的时候才会用到它,大多数表单提交都不会有它的取值。
## **formmethod在实战中使用的设置方式以及需要注意的地方⚙️**
formmethod的主要作用是改变表单的提交方式,在合理的配置下它可以使表单更加简洁、少用一些多余的代码,并且可以避免很多不同类型的提交错误。
### **1、优先级的覆盖方式:局部高于整体**
form的全局method属性对所有的提交控件都生效,但是每个控件都可以有自己的formmethod属性来改变全局设置的效果。例如如果把整个表单的方法设置为get的话,在其中某个提交按钮上就可以用formmethod=post来单独使用post方法来发送数据了,其他的按钮仍然按照原有的规则运行。
### **2、精准匹配场景的方式**
查询类的轻量级表单一律使用GET方式来提高访问速度和缓存效果;录入和提交的表单都采用POST方式来保障数据的完整性和安全性;弹窗本地交互的表单按照实际情况选择dialog模式进行填写。根据不同的情况分别设定可以避免参数丢失、提交失败或者数据泄露等问题出现。
### **3、开发中容易遇到的问题**
formmethod只适用于submit型input和button标签,并不能用于重置按钮、普通按钮等;而且该属性的值必须与标准相符,不然就会被强制转换成get方式,从而导致提交逻辑出现错误;在文件上传时只能用post模式,因为get模式无法传递文件的二进制数据,会造成上传失败。
## **formmethod与全局method的区别**
新手的程序员经常会把formmethod和form的全局method属性弄混,它们的主要区别在于作用范围、优先级等方面。全局method对整个表单有效,并且是所有提交控件默认的方式,在优先级上最低;而formmethod只对一个特定的提交控件起作用,属于局部自定义规则,在优先级上最高,可以任意更改某一个按钮的提交方式。
统一的表单提交规则用到了全局的method,而局部差异化的提交规则就用的是formmethod,二者结合使用就可以很好的适配到各种不同的前端表单开发环境中去。
formmethod是HTML表单中一个很实用的高级属性,它简单易懂、效果显著,可以优化表单的操作流程、减少前端的工作量。了解三种取值模式下的适配规则、优先级特性以及避雷要点之后就可以轻松解决表单重复提交的问题了,并且还可以防止常见的表单提交错误的发生。在实际开发过程中要根据数据类型不同、交互场景各异的情况选用合适的formmethod提交方式以保障网页的良好用户体验和数据传输的安全稳定从而提升前端代码的质量与实用性。
**Categories:** HTML5
**Comments:**
**米了:** formmethod属性用于定义提交
---