Skip to main content
Validación HTML

Valor incorrecto “” para el atributo “action” en el elemento “form”: debe ser no vacío.

Acerca de este problema HTML

El atributo action le dice al navegador dónde enviar los datos del formulario cuando se envía. Según el estándar vivo HTML de WHATWG, si se especifica el atributo action, su valor debe ser una URL válida no vacía potencialmente rodeada de espacios. Una cadena vacía ("") no cumple este requisito, por lo que el validador del W3C lo marca como error.

Aunque algunos desarrolladores usan action="" con la intención de que el formulario se envíe a la URL de la página actual, este enfoque no es HTML conforme. Los navegadores típicamente interpretan un action vacío como “enviar a la URL actual”, pero depender de este comportamiento es innecesario ya que simplemente omitir el atributo action logra el mismo resultado de manera compatible con los estándares. Cuando no hay un atributo action presente, el formulario se envía a la URL de la página que contiene el formulario: este es el comportamiento predeterminado definido por la especificación HTML.

Este problema es importante por varias razones:

  • Cumplimiento de estándares: HTML no conforme puede llevar a comportamientos inesperados en diferentes navegadores o versiones futuras de navegadores.
  • Mantenibilidad: Usar el enfoque correcto hace que tu intención sea más clara para otros desarrolladores. Omitir action señala explícitamente “enviar a la página actual”, mientras que action="" parece un error o un marcador de posición que nunca se rellenó.
  • Herramientas: Las herramientas de construcción, linters y pipelines de pruebas automatizadas que dependen de HTML válido pueden marcar o fallar con este error.

Cómo solucionarlo

Tienes dos opciones:

  1. Eliminar el atributo action si quieres que el formulario se envíe a la URL de la página actual.
  2. Proporcionar una URL válida si el formulario debe enviarse a un endpoint específico.

Ejemplos

❌ Inválido: atributo action vacío

<form action="" method="post">
  <label for="email">Email:</label>
  <input type="email" id="email" name="email">
  <button type="submit">Subscribe</button>
</form>

Esto desencadena el error: Valor incorrecto “” para el atributo “action” en el elemento “form”: debe ser no vacío.

✅ Solucionado: eliminar el atributo action

Si quieres que el formulario se envíe a la página actual, simplemente omite action:

<form method="post">
  <label for="email">Email:</label>
  <input type="email" id="email" name="email">
  <button type="submit">Subscribe</button>
</form>

✅ Solucionado: proporcionar una URL válida

Si el formulario debe enviarse a un endpoint específico, proporciona la URL:

<form action="/subscribe" method="post">
  <label for="email">Email:</label>
  <input type="email" id="email" name="email">
  <button type="submit">Subscribe</button>
</form>

✅ Solucionado: usar un hash como marcador de posición para formularios manejados con JavaScript

Si tu formulario es completamente manejado por JavaScript y no debe navegar a ningún lugar, puedes usar un # como action o, preferiblemente, omitir action y prevenir el envío en tu script:

<form method="post" id="js-form">
  <label for="query">Search:</label>
  <input type="text" id="query" name="query">
  <button type="submit">Search</button>
</form>
document.getElementById('js-form').addEventListener('submit', function(e) {
  e.preventDefault();
  // Handle form data with JavaScript
});

En este caso, omitir action es la solución más limpia. La llamada a preventDefault() de JavaScript detiene al navegador de enviar realmente el formulario, por lo que el valor de action nunca se usa.

Encuentra problemas como este automáticamente

Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.

Ayúdanos a mejorar nuestras guías

¿Te ha sido útil esta guía?

¿Listo para validar tus sitios?
Inicia tu prueba gratuita hoy.