0Pricing
HTML Academy · Lección

El elemento button: submit, reset y button

Active el envío o restablecimiento de formularios y acciones personalizadas con botones.

El elemento button: submit, reset y button es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.

El elemento button

El elemento <button> es la forma principal de crear controles en los que se puede hacer clic:

<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" envía el formulario al hacer clic:

<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" restablece todos los campos del formulario a sus valores predeterminados:

<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" no hace nada de forma predeterminada; debe asociarle 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 -->

button frente a input[type=submit]

Se prefiere <button> en lugar de <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 -->

Botón deshabilitado

Deshabilite un botón con el atributo 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;

Patrón de estado de carga

Muestre el estado de carga mientras se envía un formulario:

<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>

Sobrescrituras de formaction y formmethod

Sobrescriba la acción o el método del formulario en un botón específico:

<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>

Botón con ARIA

Los botones personalizados necesitan ARIA si su apariencia es diferente de la de los botones nativos:

<!-- 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>

Prácticas recomendadas de accesibilidad para botones

Lista de comprobación de accesibilidad para botones:

  • Especifique siempre type; nunca dependa del valor predeterminado
  • Use aria-label para los botones que solo contienen un icono
  • Use aria-pressed para los botones de alternancia
  • En los botones deshabilitados, considere usar aria-disabled="true" + JavaScript para mantenerlos enfocable
  • No use nunca <div> ni <span> como botones

Área de clic y objetivos táctiles

Los botones deben tener un área táctil de tamaño suficiente para los usuarios de dispositivos táctiles:

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;
}

Comprobación rápida

¿Qué ocurre si omite el atributo type en un botón dentro de un formulario?

Resumen: elemento button

Aspectos esenciales de button:

  • type="submit"; envía el formulario
  • type="reset"; restablece todos los campos a sus valores predeterminados
  • type="button"; no tiene comportamiento predeterminado; debe asociarle JavaScript
  • Especifique siempre type; el valor predeterminado es submit
  • Prefiera <button> en lugar de <input type="submit">
  • Use aria-label para los botones que solo contienen un icono

Preguntas frecuentes

¿La lección «El elemento button: submit, reset y button» es gratis?

Sí — el texto completo de «El elemento button: submit, reset y button» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.

¿Qué aprenderé en «El elemento button: submit, reset y button»?

Active el envío o restablecimiento de formularios y acciones personalizadas con botones. Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar HTML Academy?

No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «El elemento button: submit, reset y button»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de HTML Academy?

Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. El elemento form: action, method y enctype
  2. Tipos de input: text, password, email, number y tel
  3. El elemento label y la accesibilidad
  4. El elemento button: submit, reset y button
← Volver a HTML Academy