Sobre este problema HTML
O atributo type é específico do elemento <input>, onde determina o tipo de controlo de entrada renderizado — como text, checkbox, email, ou number. O elemento <textarea> serve um único propósito distinto: fornecer uma área de edição de texto simples multilinha. Porque não tem múltiplos modos de operação, a especificação HTML não define um atributo type para o mesmo.
Este erro ocorre comumente quando os programadores confundem <textarea> com <input>, ou quando refatorizam um <input type="text"> de linha única para um <textarea> multilinha sem remover o atributo type agora inválido. Também pode aparecer quando se usam sistemas de templates ou frameworks que aplicam atributos genericamente em diferentes elementos de formulário.
Embora os navegadores normalmente ignorem o atributo type não reconhecido num <textarea>, mantê-lo no seu markup causa erros de validação W3C e pode levar à confusão para outros programadores que leiam o código. Atributos inválidos também podem interferir com seletores de atributos CSS (por exemplo, textarea[type="text"] é um seletor que direciona markup inválido), ferramentas de acessibilidade, ou sistemas de teste automatizado que dependem de HTML bem formado.
Para corrigir este problema, remova o atributo type do elemento <textarea>. Se precisar de diferenciar entre múltiplos textareas, use os atributos id, name, ou class em vez disso. Se realmente precisar de uma entrada de texto de linha única, use <input type="text"> em vez de <textarea>.
Exemplos
Incorreto: atributo type no <textarea>
<label for="comment">O seu comentário:</label>
<textarea type="text" id="comment" name="comment" rows="4" cols="50"></textarea>
O atributo type="text" não é válido no <textarea> e vai desencadear um erro de validação.
Correto: <textarea> sem type
<label for="comment">O seu comentário:</label>
<textarea id="comment" name="comment" rows="4" cols="50"></textarea>
Simplesmente remover o atributo type resolve o problema. O elemento <textarea> fornece inerentemente uma entrada de texto multilinha, por isso não é necessário nenhum type.
Correto: Usar <input> quando se pretende um campo de linha única
Se pretendia um campo de texto de linha única, use <input> em vez disso:
<label for="username">Nome de utilizador:</label>
<input type="text" id="username" name="username">
O atributo type é válido e esperado em elementos <input>, onde controla o tipo de controlo de entrada renderizado.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.