Skip to main content
Validação HTML

Valor inválido “X” para o atributo “novalidate” no elemento “form”.

Sobre este problema HTML

Compreender atributos booleanos em HTML

No HTML, os atributos booleanos funcionam de forma diferente dos atributos regulares. A presença de um atributo booleano num elemento representa true, e a sua ausência representa false. De acordo com a especificação HTML, um atributo booleano só pode ter três formas válidas:

  • Apenas o nome do atributo: novalidate
  • O atributo com um valor vazio: novalidate=""
  • O atributo com um valor que corresponde ao seu próprio nome (insensível a maiúsculas/minúsculas): novalidate="novalidate"

Qualquer outro valor — como "true", "false", "1", "0", ou "yes" — é inválido e desencadeia este erro de validação. Esta é uma fonte comum de confusão, especialmente para programadores que vêm de frameworks como React (que usa noValidate={true}) ou de linguagens onde atributos booleanos aceitam strings explícitas de true/false.

Porque isto é importante

  • Conformidade com as normas: Usar valores inválidos viola a especificação HTML e causará falhas na validação W3C.
  • Comportamento inesperado: Embora a maioria dos navegadores seja tolerante e trate qualquer valor de novalidate como “presente” (o que significa que mesmo novalidate="false" desativaria a validação, não a ativaria), depender deste comportamento é pouco fiável e enganador para outros programadores que leiam o seu código.
  • Manutenibilidade: Escrever novalidate="false" sugere que o formulário deveria ser validado, mas o oposto é verdadeiro — o atributo está presente, pelo que a validação é ignorada. Isto cria código confuso e propenso a erros.

Sobre o atributo novalidate

O atributo novalidate diz ao navegador para ignorar a sua validação de restrições integrada quando o formulário é submetido. Sem ele, o navegador verifica campos obrigatórios, padrões de entrada, formatos de email e outras restrições antes de permitir a submissão.

Se novalidate não estiver definido no formulário, botões de submissão individuais ainda podem ignorar a validação numa base por botão usando o atributo formnovalidate num elemento <button>, <input type="submit">, ou <input type="image">.

Exemplos

❌ Inválido: Valor arbitrário em novalidate

<form method="post" novalidate="true">
  <label>Email:
    <input type="email" name="email" required>
  </label>
  <button>Submit</button>
</form>

Isto desencadeia o erro porque "true" não é um valor válido para um atributo booleano. Outras variações inválidas incluem:

<form method="post" novalidate="1">
<form method="post" novalidate="yes">
<form method="post" novalidate="false">

Note que novalidate="false" é especialmente perigoso — não ativa a validação. Porque o atributo está presente, o navegador desativa a validação independentemente do valor.

✅ Válido: Apenas o nome do atributo (recomendado)

<form method="post" novalidate>
  <label>Email:
    <input type="email" name="email" required>
  </label>
  <button>Submit</button>
</form>

✅ Válido: Valor de string vazia

<form method="post" novalidate="">
  <label>Email:
    <input type="email" name="email" required>
  </label>
  <button>Submit</button>
</form>

✅ Válido: Valor que corresponde ao nome do atributo

<form method="post" novalidate="novalidate">
  <label>Email:
    <input type="email" name="email" required>
  </label>
  <button>Submit</button>
</form>

✅ Válido: Remover o atributo para ativar a validação

Se quiser que o formulário seja validado, simplesmente remova o atributo novalidate completamente:

<form method="post">
  <label>Email:
    <input type="email" name="email" required>
  </label>
  <button>Submit</button>
</form>

✅ Usar formnovalidate num botão específico

Se quiser validação na submissão principal mas quiser ignorá-la para um botão “Guardar Rascunho”, use formnovalidate no botão em vez disso:

<form method="post">
  <label>Email:
    <input type="email" name="email" required>
  </label>
  <button>Submit</button>
  <button formnovalidate>Save Draft</button>
</form>

Este padrão mantém a validação ativa para a submissão principal enquanto permite que os rascunhos a ignorem — sem precisar de novalidate no formulário.

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.