O HTML mostrado abaixo,
<input type="text"/>
é exibido em um navegador assim:
Quando eu adiciono o seguinte texto,
A ligeira raposa marrom saltou sobre o cão preguiçoso.
Usando o HTML abaixo,
<input type="text" value="The quick brown fox jumped over the lazy dog."/>
ele é exibido em um navegador assim:
Mas eu gostaria que fosse exibido em um navegador como este:
Eu quero que o texto em meu elemento de entrada seja quebrado. Isso pode ser feito sem uma área de texto?
Respostas:
Esse é o
textarea
trabalho de - para entrada de texto de várias linhas. Elesinput
não vão fazer isso ; não foi projetado para isso.Portanto, use um
textarea
. Além de suas diferenças visuais, eles são acessados via JavaScript da mesma forma (value
propriedade de uso ).Você pode evitar que novas linhas sejam inseridas por meio do
input
evento e simplesmente usando umreplace(/\n/g, '')
.fonte
<textarea>
isso não funciona com coisas como o preenchimento automático do jQuery, mas apenas altere o<input>
para<textarea>
e isso é tudo o que é necessário. Viva os padrões!A quebra de palavras irá imitar algumas das intenções
input[type=text] { word-wrap: break-word; word-break: break-all; height: 80px; }
<input type="text" value="The quick brown fox jumped over the lazy dog" />
Como alternativa, esta solução perdeu sua eficácia em alguns navegadores. Verifique a demonstração: http://cssdesk.com/dbCSQ
fonte
Você não pode usar a entrada para isso; em vez disso, você precisa usar textarea. Use textarea com o
wrap="soft"
código e opcional o restante dos atributos como este:<textarea name="text" rows="14" cols="10" wrap="soft"> </textarea>
Atributos: Para limitar a quantidade de texto nele, por exemplo, a "40" caracteres, você pode adicionar o atributo
maxlength="40"
como este:<textarea name="text" rows="14" cols="10" wrap="soft" maxlength="40"></textarea>
Para ocultar a rolagem, o estilo para ele. se você usar apenasoverflow:scroll;
ouoverflow:hidden;
ouoverflow:auto;
terá efeito apenas para uma barra de rolagem. Se você quiser atributos diferentes para cada barra de rolagem, use os atributos como esteoverflow:scroll; overflow-x:auto; overflow-y:hidden;
na área de estilo: Para tornar a área de texto não redimensionável, você pode usar o estilo daresize:none;
seguinte forma:<textarea name="text" rows="14" cols="10" wrap="soft" maxlength="40" style="overflow:hidden; resize:none;></textarea>
Dessa forma, você pode ter ou exemplo uma área de texto com 14 linhas e 10 cols com quebra de linha e comprimento máximo de "40" caracteres que funciona exatamente como uma caixa de texto de entrada, mas com linhas ao invés e sem usar texto de entrada.
NOTA: textarea funciona com linhas, ao contrário de uma entrada
<input type="text" name="tbox" size="10"></input>
que é feita para não funcionar com linhas.fonte
Para criar uma entrada de texto em que o valor subjacente é uma string de linha única, mas é apresentado ao usuário em um formato de quebra de linha, você pode usar o atributo contenteditable em um
<div>
ou outro elemento:const el = document.querySelector('div[contenteditable]'); // Get value from element on input events el.addEventListener('input', () => console.log(el.textContent)); // Set some value el.textContent = 'Lorem ipsum curae magna venenatis mattis, purus luctus cubilia quisque in et, leo enim aliquam consequat.'
div[contenteditable] { border: 1px solid black; width: 200px; }
<div contenteditable></div>
fonte