Skip to main content
Validação HTML

Valor inválido “” para o atributo “action” no elemento “form”: Deve ser não vazio.

Sobre este problema HTML

O atributo action indica ao navegador para onde enviar os dados do formulário quando este é submetido. De acordo com o padrão WHATWG HTML living standard, se o atributo action for especificado, o seu valor deve ser um URL válido e não vazio potencialmente rodeado por espaços. Uma string vazia ("") não satisfaz este requisito, razão pela qual o validador W3C a sinaliza.

Embora alguns programadores usem action="" com a intenção de que o formulário seja submetido para o URL da página atual, esta abordagem não está em conformidade com HTML. Os navegadores normalmente interpretam um action vazio como “submeter para o URL atual”, mas confiar neste comportamento é desnecessário, uma vez que simplesmente omitir o atributo action consegue o mesmo resultado de forma compatível com os padrões. Quando não está presente nenhum atributo action, o formulário é submetido para o URL da página que contém o formulário — este é o comportamento padrão definido pela especificação HTML.

Esta questão é importante por várias razões:

  • Conformidade com padrões: HTML não conforme pode levar a comportamento inesperado em diferentes navegadores ou versões futuras de navegadores.
  • Manutenibilidade: Usar a abordagem correta torna a sua intenção mais clara para outros programadores. Omitir action sinaliza explicitamente “submeter para a página atual”, enquanto action="" parece um erro ou um placeholder que nunca foi preenchido.
  • Ferramentas: Ferramentas de build, linters e pipelines de testes automatizados que dependem de HTML válido podem sinalizar ou falhar com este erro.

Como corrigir

Tem duas opções:

  1. Remover o atributo action se quiser que o formulário seja submetido para o URL da página atual.
  2. Fornecer um URL válido se o formulário deve ser submetido para um endpoint específico.

Exemplos

❌ Inválido: Atributo action vazio

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

Isto desencadeia o erro: Valor inválido “” para o atributo “action” no elemento “form”: Deve ser não vazio.

✅ Corrigido: Remover o atributo action

Se quiser que o formulário seja submetido para a página atual, simplesmente omita action:

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

✅ Corrigido: Fornecer um URL válido

Se o formulário deve ser submetido para um endpoint específico, forneça o URL:

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

✅ Corrigido: Usar um hash como placeholder para formulários geridos por JavaScript

Se o seu formulário é totalmente gerido por JavaScript e não deve navegar para lado nenhum, pode usar um # como action ou, preferencialmente, omitir action e prevenir a submissão no seu 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
});

Neste caso, omitir action é a solução mais limpa. A chamada JavaScript preventDefault() impede que o navegador submeta efetivamente o formulário, pelo que o valor de action nunca é usado.

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.