type="button"不触发表单提交,type="submit"会自动提交所属form;submit按钮默认行为会干扰JS验证,需preventDefault()或onsubmit返回false拦截;enter键仅触发首个submit按钮;button比input更灵活且支持HTML内容;未声明type的button默认为submit,存在风险。

type="button" 不触发表单提交,type="submit" 会自动提交所属 <form></form> ——这是最根本的区别,不是“能不能”,而是“默认会不会”。
submit 按钮的默认行为会干扰 JS 验证
如果你在 <form></form> 里放了 <button type="submit"></button> 或 <input type="submit">,又同时绑了 onclick 做表单校验,不加干预就会出现:校验通过后提交一次,校验失败也照样提交一次(因为默认行为没被阻止)。
- 必须显式调用
event.preventDefault()才能拦住它 - 或者在
onsubmit事件处理器里返回false(注意:只对form元素有效) - 更稳妥的做法是改用
type="button",把提交逻辑完全交给 JS 控制
enter 键触发的是 submit,不是 button
用户在文本框中按回车时,浏览器会自动点击当前 <form></form> 内第一个 type="submit" 按钮。这个行为和你有没有写 onclick 无关,也和按钮是否可见无关。
-
type="button"完全不会响应 enter 键 - 如果页面需要支持键盘提交,就不能只靠
type="button" - 多个
type="submit"按钮共存时,enter 键只触发第一个,无法指定
button[type="submit"] 比 input[type="submit"] 更灵活
<button type="submit"></button> 是现代推荐写法,<input type="submit"> 已逐渐被替代。
把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。
立即学习“前端免费学习笔记(深入)”;
-
<button></button>支持内嵌 HTML(比如图标、<span></span>、加载状态文案),<input>只能靠value显示纯文本 -
<button></button>的样式控制更直接(伪元素、子元素、宽高继承等) - IE8 及更早版本中,
<button></button>的type默认是"button"而非"submit",需显式声明
什么时候该用 type="button"?
当按钮功能与“提交整张表单”无关时,就该用 type="button" ——哪怕它最终也调用了 form.submit()。
- 表单内“添加一行字段”“删除某条数据”这类操作
- 带 loading 状态的提交按钮(避免重复点击)
- 切换表单模式(如“编辑 → 预览 → 提交”)
- 调用
fetch()发送局部数据,不刷新页面
容易被忽略的一点:type 属性不写,默认就是 "submit"(仅限 <button></button> 标签),所以不声明 type 的 <button></button> 在表单里是危险的。


















