You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

type为submit的按钮应绑定click事件还是submit事件?

核心结论

表单内type="submit"的提交按钮,核心提交逻辑请统一绑定在<form>元素的submit事件上,不需要单独为提交按钮绑定click事件处理提交逻辑。


具体原因
  • 你已经了解submit事件绑定在form上可以覆盖回车键提交的场景,实际上这个事件天然覆盖了所有合法的表单提交触发路径:鼠标点击表单内任意submit按钮、输入框聚焦时按回车提交、甚至JS手动调用form.submit()触发的提交,全部会触发form绑定的submit事件,一套逻辑就能覆盖所有提交入口,不会漏场景。
  • 单独给submit按钮绑定click处理提交逻辑有明显缺陷:
    1. 你写的选择器存在拼写错误:属性值是submit不是sumbit,这类拼写错误会直接导致事件绑定失效
    2. 就算修正拼写,click事件只能覆盖鼠标点击这个按钮的场景,覆盖不到回车提交、其他提交入口触发的提交,很容易出现逻辑遗漏
    3. 提交逻辑分散在click事件中,很容易出现默认行为阻止不全、重复提交的bug

正确写法示例

统一在form元素上绑定submit事件处理全量提交逻辑即可:

// 绑定提交处理逻辑,覆盖所有提交触发场景
$('form').on('submit', function(e) {
  // 首先阻止表单默认的跳转式提交行为
  e.preventDefault()
  // 后续所有提交相关逻辑:表单校验、接口请求、提交成功/失败交互,全部写在这里
})

如果需要做提交按钮本身的专属交互(比如点击后给按钮加loading状态、禁用按钮防止重复点击),可以单独给按钮绑定click事件,但注意核心提交校验、请求发送逻辑不要放在click事件里,还是要收敛到submit事件中统一处理。

另外补充一点:你写的$('form').submit()、$('button[type="sumbit"]').click()是主动触发对应事件的写法,不是绑定事件处理函数的写法,绑定事件需要传入事件处理函数作为参数。


内容的提问来源于stack exchange,提问作者Almir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:21:15