表单方法属性仅对类型为submit或image的按钮控件生效,其他类型无效。其值仅支持get与post两种,且严格区分大小写。此属性必须与表单动作属性配合使用,否则只改变请求方法而不修改提交地址。此外,它仅影响浏览器原生提交,通过JavaScript手动提交表单时完全无效。
formmethod属性本质上是个"替补选手"——它只在特定场景下发挥作用,但很多人一开始就把它的使用条件搞错了。接下来我们把它的几个核心限制拆开说清楚。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
很多开发者给或加了formmethod却发现没效果,第一反应是怀疑浏览器兼容性有问题。但实际情况八成是类型写错了。它只响应type="submit"或type="image"的控件,type="button"、type="text"、甚至没写type的,都完全无视这个属性。
常见踩坑案例:
—— 缺少type="submit",无效 —— type不匹配,浏览器直接忽略 —— GET大写,在部分旧浏览器中会自动降级为表单默认methodHTML原生表单不支持DELETE、PUT等方法,formmethod也不例外。如果你写了formmethod="delete",Chrome和Firefox会直接当没看见,按的method走;Safari可能降级为GET;IE 10+则干脆忽略整条属性。
所以别指望靠formmethod实现RESTful操作——后端要接DELETE,前端必须用JS拦截提交,比如event.preventDefault()加fetch()手动发请求。
真正可用的值只有两个:
get(全小写)post(全小写)大小写敏感不是建议,是实际行为:某些Android WebView或旧版Safari会把POST当作非法值处理。
formmethod只改请求方法,不改地址。哪怕你点了「取消」按钮并加了formmethod="get",只要没配formaction,数据照样发往,只是变成GET请求——参数全拼在URL上,后端如果只读$_POST或req.body,就收不到任何东西。
正确写法必须成对出现:
—— 注意:formaction=""不生效,会回退到的action另外,formaction优先级高于的action,且每个按钮可独立指定,互不影响。
一旦你在表单上绑了submit事件并调用了event.preventDefault(),或者用fetch()/axios手动发请求,formmethod和formaction就只是HTML字符串里的普通属性,浏览器不会读取、不会解析、也不会应用。
这意味着:
formmethod="get"提交,后端就得从query string里取值,而不是body最容易被忽略的点是:它只在"用户点击submit按钮 → 浏览器发起原生HTTP请求"这个路径下起作用。现代项目里这条路径越来越短,多数时候它只是个优雅降级的备用方案,不是主力逻辑。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述