El HTML que se muestra a continuación,
<input type="text"/>
se muestra en un navegador así:
Cuando agrego el siguiente texto,
El veloz zorro marrón saltó sobre el perro perezoso.
Usando el HTML a continuación,
<input type="text" value="The quick brown fox jumped over the lazy dog."/>
se muestra en un navegador así:
Pero me gustaría que se muestre en un navegador como este:
Quiero que el texto de mi elemento de entrada se ajuste. ¿Se puede lograr esto sin un área de texto?
Respuestas:
Ese es el
textarea
trabajo del ', para la entrada de texto de varias líneas. Elinput
no lo hará ; no fue diseñado para hacerlo.Entonces usa un
textarea
. Además de sus diferencias visuales, se accede a ellos a través de JavaScript de la misma manera (value
propiedad de uso ).Puede evitar que se ingresen nuevas líneas a través del
input
evento y simplemente usando unreplace(/\n/g, '')
.fuente
<textarea>
no funcionará con cosas como el autocompletado de jQuery, pero simplemente cambie<input>
a<textarea>
y eso es todo lo que es necesario. ¡Hurra por los estándares!Word Break imitará algunas de las intenciones
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 solución alternativa, esta solución perdió su eficacia en algunos navegadores. Consulte la demostración: http://cssdesk.com/dbCSQ
fuente
Puede no utilizar la entrada para ello, es necesario utilizar área de texto en su lugar. Use textarea con el
wrap="soft"
código y opcional el resto de los atributos como este:<textarea name="text" rows="14" cols="10" wrap="soft"> </textarea>
Atributos: Para limitar la cantidad de texto en él, por ejemplo, a "40" caracteres, puede agregar el atributo de
maxlength="40"
esta manera:<textarea name="text" rows="14" cols="10" wrap="soft" maxlength="40"></textarea>
Para ocultar el estilo del desplazamiento. si solo usaoverflow:scroll;
ooverflow:hidden;
ooverflow:auto;
solo tendrá efecto para una barra de desplazamiento. Si desea diferentes atributos para cada barra de desplazamiento, use los atributos como esteoverflow:scroll; overflow-x:auto; overflow-y:hidden;
en el área de estilo: Para hacer que el área de texto no sea redimensionable, puede usar el estilo conresize:none;
esto:<textarea name="text" rows="14" cols="10" wrap="soft" maxlength="40" style="overflow:hidden; resize:none;></textarea>
De esa manera, puede tener un ejemplo de un área de texto con 14 filas y 10 columnas con ajuste de palabras y una longitud máxima de caracteres de "40" que funciona exactamente como lo hace un cuadro de texto de entrada, pero con filas en su lugar y sin usar texto de entrada.
NOTA: textarea funciona con filas a diferencia de la entrada similar
<input type="text" name="tbox" size="10"></input>
que está hecha para no funcionar con filas en absoluto.fuente
Para crear una entrada de texto en la que el valor bajo el capó es una cadena de una sola línea pero se presenta al usuario en un formato envuelto en palabras, puede usar el atributo contenteditable en uno
<div>
u otro 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>
fuente