Sobre este problema HTML
O atributo multiple indica ao browser que o utilizador pode fornecer mais do que um valor para um determinado input. Para <input type="file">, permite selecionar múltiplos ficheiros de uma vez. Para <input type="email">, permite inserir uma lista de endereços de email separados por vírgulas. Estes são os únicos dois tipos de input que suportam o atributo multiple de acordo com a especificação HTML.
Este erro de validação pode aparecer por duas razões distintas, e por vezes ambas em simultâneo:
-
Um valor inválido é atribuído ao atributo booleano. Os atributos booleanos em HTML seguem regras rigorosas. Sintaxes válidas são: apenas o nome do atributo (
multiple), um valor de string vazia (multiple=""), ou o próprio nome do atributo como valor (multiple="multiple"). Qualquer outro valor — incluindomultiple="true",multiple="1", oumultiple="yes"— é inválido. -
O atributo é usado num tipo de input não suportado. Colocar
multipleem tipos de input comotext,number,password, ouurlnão é válido porque esses tipos não definem comportamento para este atributo. Os browsers irão simplesmente ignorá-lo, mas ainda assim constitui marcação inválida.
Por que razão isto é importante
-
Conformidade com os padrões: Valores inválidos de atributos booleanos violam a especificação HTML do WHATWG. Embora a maioria dos browsers seja tolerante e possa ainda interpretar
multiple="true"como o atributo estando presente, confiar neste comportamento é frágil e não-padrão. - Acessibilidade: Tecnologias assistivas dependem de marcação válida e bem estruturada. Um valor de atributo inválido pode levar a comportamento imprevisível em leitores de ecrã ou outras ferramentas.
-
Manutenibilidade: Usar
multiplenum tipo de input não suportado sugere um mal-entendido das capacidades do elemento, o que pode confundir outros programadores e levar a bugs.
Como corrigir
-
Remover completamente o valor: Altere
multiple="1"oumultiple="true"para apenasmultiple. -
Use uma sintaxe booleana válida se um valor for necessário: Alguns sistemas de templates ou contextos baseados em XML (como XHTML) requerem valores de atributos explícitos. Nesses casos, use
multiple=""oumultiple="multiple". -
Certifique-se de que o tipo de input suporta
multiple: Apenastype="email"etype="file"aceitam este atributo. Se precisar de input de múltiplos valores para outros tipos, considere abordagens alternativas como múltiplos inputs separados, um elemento<select multiple>, ou uma solução baseada em JavaScript.
Exemplos
Inválido: valor errado num atributo booleano
<!-- Mau: "1" não é um valor de atributo booleano válido -->
<input type="file" name="attachments" multiple="1">
<!-- Mau: "true" não é um valor de atributo booleano válido -->
<input type="email" name="recipients" multiple="true">
Inválido: multiple num tipo de input não suportado
<!-- Mau: type="text" não suporta o atributo multiple -->
<input type="text" name="tags" multiple>
<!-- Mau: type="number" não suporta o atributo multiple -->
<input type="number" name="quantities" multiple>
Válido: uso correto de multiple
<!-- Correto: atributo booleano sem valor -->
<input type="file" name="attachments" multiple>
<!-- Correto: valor de string vazia (sintaxe booleana válida) -->
<input type="email" name="recipients" multiple="">
<!-- Correto: nome do atributo como valor (válido para compatibilidade XHTML) -->
<input type="file" name="documents" multiple="multiple">
Documento corrigido completo
<!DOCTYPE html>
<html lang="en">
<head>
<title>Upload Form</title>
</head>
<body>
<form action="/submit" method="post" enctype="multipart/form-data">
<label for="recipients">Destinatários:</label>
<input type="email" id="recipients" name="recipients" multiple placeholder="a@exemplo.com, b@exemplo.com">
<label for="files">Anexos:</label>
<input type="file" id="files" name="files" multiple>
<button type="submit">Enviar</button>
</form>
</body>
</html>
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.