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

如何让表单内TextField回车触发提交而非中途按钮事件?

解决Material UI表单回车触发错误按钮的问题

这个问题我之前也碰到过!根源其实在原生HTML的按钮默认行为上:你用的<button>标签如果没有显式指定type属性,浏览器会默认把它当作type="submit"处理。也就是说,你的“Lost password?”按钮实际上是个隐藏的表单提交按钮,当用户在输入框按回车时,浏览器会优先触发第一个找到的submit类型按钮的点击事件,这就导致回车触发了找回密码的操作,而非预期的表单提交。

最简单的修复方案

给“Lost password?”按钮添加type="button"属性,明确告诉浏览器这只是一个普通按钮,不具备表单提交的默认行为:

<button 
  type="button"  {/* 新增这个属性 */}
  className={classes.linkButton} 
  onClick={(e) => { handleRequestPasswordRecover(e) }}
>
  {'Lost password?'}
</button>

为什么这样有效?

当你指定type="button"后,这个按钮就完全脱离了表单的提交逻辑。此时用户按回车时,浏览器会找到表单中真正设置了type="submit"的按钮(也就是你的“Login”按钮),从而触发表单的onSubmit事件,完全符合你的预期。

额外优化建议

如果你想更贴合Material UI的组件体系,也可以把这个原生button替换成Material UI的Button组件,并设置type="button",风格会更统一:

<Button
  type="button"
  className={classes.linkButton}
  onClick={(e) => handleRequestPasswordRecover(e)}
>
  {'Lost password?'}
</Button>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:51:38