formmethod是HTML5新增属性,仅用于button或submit/image类型input元素,用于覆盖所属form的method值;它不作用于form本身,且只支持get/post原生提交,其他方法需后端或JS配合。

formmethod 是什么,和 form 的 method 有什么区别?
formmethod 是 HTML5 新增的属性,专用于 <button></button> 或 <input type="submit|image"> 元素,用来**覆盖其所属 <form></form> 标签的 method 值**。它不作用于 <form></form> 本身——<form method="post"></form> 里的 method 才是表单级默认提交方式。
常见误解是把它当成 <form></form> 的属性,但实际在 <form></form> 上写 formmethod 无效,浏览器会直接忽略。
什么时候必须用 formmethod?
当你需要**同一个表单里多个提交按钮走不同 HTTP 方法**时,formmethod 就不可替代。比如一个编辑页,「保存」用 POST,「预览」用 GET(把数据拼进 URL 方便刷新或分享),「删除」用 DELETE(配合后端 RESTful 路由)。
<button type="submit" formmethod="get">预览</button><button type="submit" formmethod="post">保存</button>-
<button type="submit" formmethod="delete">删除</button>(注意:浏览器原生只认get和post,delete需后端配合或 JS 拦截)
浏览器支持和兼容性陷阱
formmethod 在所有现代浏览器中都可用(Chrome 10+、Firefox 4+、Edge、Safari 5.1+),但有两个关键限制:
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
立即学习“前端免费学习笔记(深入)”;
- 值只接受
"get"或"post"才能被原生提交;其他如"put"、"delete"不会触发对应 HTTP 方法,而是回退到form的默认method或get - IE 完全不支持
formmethod,哪怕 IE11 —— 如果还要兼容 IE,必须用 JS 拦截点击、动态修改form.method再 submit - 使用
formmethod="get"时,表单控件的name会变成 URL 查询参数,空值也会被带上(如?q=&category=),后端需做好空字符串处理
容易被忽略的细节:formmethod 不会改变 action
formmethod 只改请求方法,不碰 action。无论你点哪个按钮,数据都发往同一个 action 地址。如果要让「预览」和「保存」去不同接口,得配合 formaction 属性一起用:
<button type="submit" formmethod="get" formaction="/preview">预览</button> <button type="submit" formmethod="post" formaction="/save">保存</button>
这时候每个按钮才真正拥有独立的「地址 + 方法」组合。漏掉 formaction 却以为 formmethod 能切换接口,是调试时最常卡住的地方。


















