Skip to main content
Validação HTML

Valor inválido “” para o atributo “max” no elemento “input”: A string vazia não é um número de vírgula flutuante válido.

Sobre este problema HTML

O atributo max define o valor máximo que é aceitável e válido para o input que o contém. Quando o navegador encontra max="", espera um número de vírgula flutuante válido conforme definido pela especificação HTML. Uma string vazia não pode ser analisada como um número, pelo que o atributo torna-se sem significado e desencadeia um erro de validação.

Isto acontece frequentemente quando o HTML é gerado dinamicamente por um motor de templates ou framework que produz um valor vazio para max quando não foi configurado nenhum máximo. Também pode ocorrer quando um programador adiciona o atributo como placeholder com intenção de o preencher mais tarde.

Embora a maioria dos navegadores ignore silenciosamente um valor max inválido, confiar neste comportamento é problemático por várias razões:

  • Conformidade com os padrões: A especificação HTML requer que max seja um número de vírgula flutuante válido quando presente.
  • Validação previsível: Um max vazio significa que não há restrição máxima do lado do cliente aplicada, o que pode não ser a intenção do programador. Remover explicitamente o atributo torna essa intenção clara.
  • Acessibilidade: As tecnologias assistivas podem ler o atributo max para comunicar restrições de input aos utilizadores. Um valor vazio poderia levar a um comportamento confuso ou indefinido.

Este erro aplica-se aos tipos de input que aceitam valores max de estilo numérico, incluindo number, range, date, datetime-local, month, week, e time.

Como corrigir

  1. Definir um valor numérico válido: Se precisar de uma restrição máxima, forneça um número de vírgula flutuante adequado (por exemplo, max="100" ou max="99.5").
  2. Remover o atributo: Se não for necessário nenhum máximo, remova completamente o atributo max em vez de o deixar vazio.
  3. Corrigir templates dinâmicos: Se o seu HTML for gerado a partir de um template, adicione uma verificação condicional para que max seja apenas renderizado quando um valor estiver realmente disponível.

Exemplos

❌ Inválido: Atributo max vazio

<label for="quantity">Quantidade:</label>
<input type="number" id="quantity" name="quantity" max="">

A string vazia "" não é um número de vírgula flutuante válido, pelo que isto desencadeia o erro de validação.

✅ Corrigido: Fornecer um valor numérico válido

<label for="quantity">Quantidade:</label>
<input type="number" id="quantity" name="quantity" max="100">

✅ Corrigido: Remover completamente o atributo

<label for="quantity">Quantidade:</label>
<input type="number" id="quantity" name="quantity">

Se não for necessária nenhuma restrição máxima, simplesmente omita o atributo max.

❌ Inválido: max vazio num input de data

<label for="end-date">Data de fim:</label>
<input type="date" id="end-date" name="end-date" max="">

✅ Corrigido: Valor de data válido para max

<label for="end-date">Data de fim:</label>
<input type="date" id="end-date" name="end-date" max="2025-12-31">

Para tipos de input relacionados com datas, o valor max deve estar no formato apropriado de data/hora (por exemplo, YYYY-MM-DD para type="date").

Corrigir templates dinâmicos

Se estiver a gerar HTML com uma linguagem de templates, inclua condicionalmente o atributo apenas quando existir um valor. Por exemplo, num template estilo Jinja2:

<input type="number" id="price" name="price"
  {% if max_price %}max="{{ max_price }}"{% endif %}>

Isto garante que o atributo max é apenas renderizado quando max_price tem um valor válido, evitando completamente o problema da string vazia.

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.