Formik表单按回车键误触发未设submit类型的Back按钮问题
问题根因
这是HTML表单的原生默认行为导致的,和Formik框架本身无关:
- 放在
<form>标签内部的<button>元素,如果没有显式声明type属性,浏览器会默认将其识别为type="submit"的提交按钮 - 当表单内存在聚焦的文本输入框时按下回车键,浏览器会自动触发DOM树中排在最前面的提交按钮的点击事件
你的代码里「Back」按钮没有设置任何type属性,实际就是表单内第一个提交按钮,所以按回车时会优先触发它的点击逻辑。
修复方法
给「Back」按钮显式添加type="button"属性,将其标记为普通功能按钮,就不会被表单的默认回车提交逻辑捕获:
<button type="button" onClick={backFunction} className="btn-s-one" > Back </button>
最佳实践提醒
- 所有放在表单内部、不承担提交/重置功能的按钮,都要显式声明
type="button",不要依赖浏览器默认的type值,避免触发非预期的行为 - 如果需要调整回车触发的提交按钮,只需要把对应
type="submit"的按钮放在DOM顺序的最前面,或者通过JS自定义回车事件逻辑即可
内容的提问来源于stack exchange,提问作者Profer
相关产品推荐
相关产品推荐

