Skip to main content
Validação HTML

Valor inválido “” para o atributo “maxlength” no elemento “input”: A string vazia não é um número inteiro não negativo válido.

Sobre este problema HTML

A especificação HTML define maxlength como aceitando apenas um número inteiro não negativo válido — uma string de um ou mais dígitos ASCII que representa um número maior ou igual a zero. Uma string vazia não satisfaz este requisito, por isso o validador W3C sinaliza-a como um erro. Isto acontece frequentemente quando um valor é gerado dinamicamente por um CMS, motor de templates ou framework JavaScript e o valor acaba por ficar em branco, ou quando um programador adiciona o atributo como marcador de posição com a intenção de o preencher mais tarde.

Por que isto é importante

Embora a maioria dos browsers ignore silenciosamente um maxlength vazio e não imponha nenhum limite de caracteres, confiar neste comportamento é problemático por várias razões:

  • Conformidade com standards: HTML inválido pode levar a comportamento imprevisível entre diferentes browsers e versões. O que funciona hoje pode não funcionar amanhã.
  • Acessibilidade: Tecnologias assistivas podem ler ou interpretar o atributo maxlength para comunicar restrições de entrada aos utilizadores. Um valor vazio pode causar anúncios confusos ou incorretos.
  • Manutenibilidade: Um maxlength vazio é ambíguo — não é claro se o programador pretendia nenhum limite, se esqueceu de definir um valor, ou se um erro causou a falta do valor.

Como corrigir

Tem duas opções:

  1. Definir um número inteiro não negativo válido: Forneça um número concreto que representa o número máximo de caracteres que o utilizador pode inserir, como maxlength="100".
  2. Remover o atributo: Se não precisa de impor um limite de caracteres, simplesmente omita maxlength por completo. Não há necessidade de o incluir com um valor vazio.

Valores válidos para maxlength incluem "0", "1", "255", ou qualquer outro número inteiro não negativo. Os seguintes não são válidos: strings vazias (""), números negativos ("-1"), números decimais ("10.5"), ou strings não numéricas ("none").

Onde se aplica maxlength

O atributo maxlength é significativo em tipos de input de entrada de texto: text, search, url, tel, email, password, e também no elemento textarea. Para tipos de input não textuais como number, date, range, ou checkbox, o atributo não tem efeito e não deve ser usado.

Exemplos

❌ Incorreto: string vazia desencadeia o erro de validação

<input type="text" name="username" maxlength="">

❌ Incorreto: outros valores inválidos

<input type="text" name="username" maxlength="-1">
<input type="email" name="email" maxlength="none">
<input type="text" name="bio" maxlength="10.5">

✅ Correto: comprimento máximo explícito

<input type="text" name="username" maxlength="30">

✅ Correto: omitir o atributo quando não é necessário nenhum limite

<input type="text" name="comment">

✅ Correto: maxlength num textarea

<textarea name="bio" maxlength="500"></textarea>

✅ Correto: valor dinâmico com um fallback

Se o seu valor maxlength vem de um template ou CMS, certifique-se de que produz um número válido ou omite o atributo completamente. Por exemplo, numa linguagem de templates, use lógica condicional:

<!-- Renderizar maxlength apenas se o valor estiver definido -->

<input type="text" name="username" maxlength="100">

Em vez de renderizar um atributo vazio como maxlength="", certifique-se de que o seu template ignora o atributo quando nenhum valor está configurado.

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.