0Pricing
HTML Academy · 课时

button 元素:submit、reset 与 button

使用按钮触发表单提交、重置或自定义操作。

button 元素:submit、reset 与 button 是 CoddyKit 上的免费 HTML Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 HTML Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 HTML Academy 课程共包含 4 节课。

按钮元素

<button> 元素是创建可点击控件的主要方式:

<button type="submit">Submit</button>
<button type="reset">Clear Form</button>
<button type="button">Do Something</button>

<!-- Three types, each with a different default behavior -->
<!-- Always specify type — the default is submit inside forms -->

type=submit

type="submit" 会在点击时提交表单:

<form action="/register" method="post">
  <input type="email" name="email">
  <button type="submit">Create Account</button>
</form>
<!-- Triggers form validation, then sends the form data -->
<!-- Also triggered by pressing Enter in most text inputs -->

type=reset

type="reset" 会将所有表单字段清除并恢复为默认值:

<form>
  <input type="text" name="name" value="">  <!-- empty default -->
  <input type="number" name="qty" value="1">  <!-- default: 1 -->
  <button type="reset">Clear</button>
</form>
<!-- Clicking reset restores qty to 1 and clears name -->
<!-- Use sparingly — users often accidentally reset forms -->

type=button

type="button" 默认不执行任何操作 — 请附加 JavaScript:

<button type="button" id="toggle-theme">Toggle Dark Mode</button>

<script>
document.getElementById('toggle-theme').addEventListener('click', () => {
  document.body.classList.toggle('dark');
});
</script>
<!-- type="button" prevents accidental form submission
     Always use this for non-submit buttons -->

按钮与 input[type=submit]

<button> 比 <input type="submit"> 更推荐:

<!-- Old way (limited): -->
<input type="submit" value="Submit">

<!-- Modern way (flexible — can contain HTML): -->
<button type="submit">
  <svg><!-- icon --></svg>
  Submit Form
</button>
<!-- button can contain icons, emphasis, and any inline HTML
     input type=submit can only have plain text via the value attribute -->

禁用按钮

使用 disabled 属性禁用按钮:

<button type="submit" disabled>Submit</button>
<!-- Disabled buttons:
  - Cannot be clicked
  - Not in tab order
  - NOT submitted with the form
  - Browser renders them grayed out -->

<!-- Enable/disable with JavaScript: -->
btn.disabled = true;
btn.disabled = false;

加载状态模式

提交表单期间显示加载状态:

<button type="submit" id="submit-btn">
  <span id="btn-text">Submit</span>
  <span id="btn-spinner" hidden aria-hidden="true">⏳</span>
</button>

<script>
form.addEventListener('submit', () => {
  document.getElementById('submit-btn').disabled = true;
  document.getElementById('btn-text').textContent = 'Submitting...';
  document.getElementById('btn-spinner').hidden = false;
  document.getElementById('btn-spinner').removeAttribute('aria-hidden');
});
</script>

formaction 和 formmethod 覆盖设置

在特定按钮上覆盖表单操作或方法:

<form action="/save" method="post">
  <input type="text" name="title">

  <!-- Save: uses form defaults -->
  <button type="submit">Save Draft</button>

  <!-- Publish: overrides action and method -->
  <button type="submit" formaction="/publish" formmethod="post">
    Publish Now
  </button>
</form>

带 ARIA 的按钮

如果自定义按钮的外观与原生按钮不同,就需要使用 ARIA:

<!-- Icon-only button -->
<button type="button" aria-label="Close dialog">
  <svg aria-hidden="true"><!-- X icon --></svg>
</button>

<!-- Toggle button -->
<button type="button" aria-pressed="false" id="bold-btn">
  Bold
</button>
<script>
document.getElementById('bold-btn').addEventListener('click', function() {
  const pressed = this.getAttribute('aria-pressed') === 'true';
  this.setAttribute('aria-pressed', !pressed);
});
</script>

按钮可访问性最佳实践

按钮可访问性检查清单:

  • 始终指定 type — 切勿依赖默认值
  • 仅包含图标的按钮应使用 aria-label
  • 切换按钮应使用 aria-pressed
  • 禁用按钮:可以考虑使用 aria-disabled="true" + JavaScript,使其仍可获得焦点
  • 切勿使用 <div> 或 <span> 作为按钮

点击区域和触摸目标

按钮必须具有足够大的点击目标,以方便触摸设备用户操作:

button {
  min-height: 44px;   /* Apple HIG minimum */
  min-width: 44px;    /* WCAG 2.5.5 (AAA) recommends 44x44 -->
  padding: 0.5rem 1rem;
  cursor: pointer;
}

/* Increase tap area without changing visual size: */
button {
  position: relative;
}
button::before {
  content: '';
  position: absolute;
  inset: -8px;
}

快速检查

如果省略表单内按钮的 type 属性,会发生什么?

回顾:按钮元素

按钮要点:

  • type="submit" — 提交表单
  • type="reset" — 将所有字段重置为默认值
  • type="button" — 没有默认行为;请附加 JavaScript
  • 始终指定 type — 默认值是 submit
  • 优先使用 <button>,而不是 <input type="submit">
  • 仅包含图标的按钮应使用 aria-label

常见问题解答

「button 元素:submit、reset 与 button」课时是免费的吗?

是的 — 「button 元素:submit、reset 与 button」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 HTML Academy 课程的其余内容,请升级到 CoddyKit PRO。 HTML Academy 课程共包含 4 节课。

「button 元素:submit、reset 与 button」这节课中我会学到什么?

使用按钮触发表单提交、重置或自定义操作。 你通过在浏览器中直接运行的动手代码来练习 HTML Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 HTML Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 HTML Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「button 元素:submit、reset 与 button」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 HTML Academy 课中编写并运行代码吗?

能。每节 HTML Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. form 元素:action、method 与 enctype
  2. 输入类型:text、password、email、number 与 tel
  3. label 元素与无障碍
  4. button 元素:submit、reset 与 button
← 返回 HTML Academy