Sobre este problema HTML
O atributo wrap num <textarea> controla como o texto é quebrado quando o formulário é submetido. O valor "virtual" foi usado por alguns navegadores mais antigos (nomeadamente versões iniciais do Netscape e Internet Explorer) como uma alternativa proprietária ao que o HTML Standard agora chama "soft". Uma vez que "virtual" nunca foi parte de nenhuma especificação HTML formal, o validador W3C rejeita-o corretamente como um valor inválido.
O HTML Standard define apenas dois valores válidos para wrap:
-
soft(o padrão): O texto é visualmente quebrado no navegador para fins de exibição, mas nenhum caractere de quebra de linha real é inserido nos dados do formulário submetido. O servidor recebe o texto como linhas contínuas. -
hard: O navegador insere caracteres de retorno de carro + alimentação de linha (CRLF) nos pontos de quebra visual quando o formulário é submetido, pelo que o servidor recebe o texto com quebras de linha fixas. Ao usarwrap="hard", você deve também especificar o atributocolspara que o navegador saiba onde estão os pontos de quebra.
Uma vez que "virtual" era funcionalmente idêntico a "soft", substituí-lo é direto. Se você omitir o atributo wrap completamente, o navegador usa quebra suave por padrão, o que lhe dá o mesmo comportamento.
Porque isto importa
Usar valores de atributo não-padrão pode levar a comportamento imprevisível entre navegadores. Embora a maioria dos navegadores modernos provavelmente recorra à quebra suave quando encontram um valor wrap não reconhecido, isto não é garantido por nenhuma especificação. Aderir a valores válidos assegura comportamento consistente entre navegadores e mantém a sua marcação em conformidade com os padrões.
Como corrigir
-
Substitua
wrap="virtual"porwrap="soft"para um equivalente explícito. -
Remova o atributo
wrapcompletamente se quiser o comportamento padrão de quebra suave. -
Use
wrap="hard"com um atributocolsse realmente precisar de quebras de linha fixas inseridas na submissão.
Exemplos
❌ Inválido: usando o valor não-padrão "virtual"
<form>
<label for="msg">Mensagem</label>
<textarea id="msg" name="msg" wrap="virtual"></textarea>
</form>
Isto desencadeia o erro: Bad value “virtual” for attribute “wrap” on element “textarea”.
✅ Corrigido: usando wrap="soft" (equivalente a "virtual")
<form>
<label for="msg">Mensagem</label>
<textarea id="msg" name="msg" wrap="soft"></textarea>
</form>
✅ Corrigido: omitindo wrap completamente (usa "soft" por padrão)
<form>
<label for="msg">Mensagem</label>
<textarea id="msg" name="msg"></textarea>
</form>
Uma vez que "soft" é o padrão, remover o atributo produz comportamento idêntico e marcação mais limpa.
✅ Corrigido: usando wrap="hard" com cols
Se precisar que o texto submetido inclua quebras de linha nos pontos de quebra, use wrap="hard" e especifique cols:
<form>
<label for="msg">Mensagem</label>
<textarea id="msg" name="msg" wrap="hard" cols="60" rows="6"></textarea>
</form>
Note que cols é obrigatório ao usar wrap="hard". Omiti-lo desencadeará um erro de validação separado.
Outros valores legados a observar
O valor "virtual" não é o único valor wrap não-padrão do início da web. Você pode também encontrar wrap="physical" (o equivalente legado de "hard") ou wrap="off" (que desativava a quebra). Nenhum é válido em HTML moderno. Substitua "physical" por "hard" (e adicione cols), e substitua "off" removendo o atributo e usando CSS (white-space: nowrap; ou overflow-wrap: normal;) para controlar a quebra visual se necessário.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.