Múltiples líneas de entrada en <input type = "text" />

403

Tengo esta entrada de texto en un formulario:

<input type="text"
       cols="40" 
       rows="5" 
       style="width:200px; height:50px;" 
       name="Text1" 
       id="Text1" 
       value="" />

Estoy tratando de hacer que tome múltiples líneas de entrada. El ancho y la altura hacen que el cuadro sea más grande, pero el usuario puede ingresar texto (s) todo lo que quiera, pero solo llena una línea.

¿Cómo hago que la entrada se parezca más a un área de texto?

Principiante
fuente

Respuestas:

676

Necesita usar un área de texto para obtener un manejo multilínea.

<textarea name="Text1" cols="40" rows="5"></textarea>

Ólafur Waage
fuente
6262
Y la etiqueta textarea no puede cerrarse automáticamente. <textarea \>es inválido.
Alex H
29
@alexH independientemente de textarea, esa es la barra incorrecta. La respuesta original se cerró automáticamente, pero al menos fue la barra correcta.
Adam
44
@ Adam, lo sé, pero ya no puedo editarlo. Y no quiero eliminarlo, porque en mi opinión, la parte de cierre automático es importante.
Alex H
44
Sí, pero textareano es compatible con el patternatributo. Tan maldita sea.
toddmo
1
Lo que no me gusta de esto es que en JQuery, no se puede establecer el valor de textarea usando val(). Tienes appendque hacerlo. :(
Malcolm Salvador
59

Es posible hacer una entrada de texto de varias líneas dándole el word-break: break-word;atributo. (Solo probé esto en Chrome)

Sté
fuente
1
¡Gracias! Me di cuenta de que Chrome estaba permitiendo múltiples líneas para las entradas, lo que no quería, y la razón era la ruptura de palabras que se heredó del elemento del cuerpo
rap1ds
3
Se ve bien en Chrome 39 y Safari 8.0.2, pero no en Firefox 34 en mis breves pruebas. :( jsfiddle.net/msybs9g7
Jeremy Wadhams
55
Creo que ya no funciona en Chrome.
Fifi
53

No puedes Al momento de escribir, el único elemento de formulario HTML que está diseñado para ser multilínea es <textarea>.

Álvaro González
fuente
49

Usa el área de texto

<textarea name="textarea" style="width:250px;height:150px;"></textarea>

no deje ningún espacio entre las etiquetas de apertura y cierre O bien, esto dejará algunas líneas o espacios vacíos.

themightysapien
fuente
7

Debe usar textareapara admitir entradas de varias líneas.

<textarea rows="4" cols="50">
Here you can write some text to display in the textarea as the default text
</textarea>
Osanda Deshan
fuente
1

Si necesita un área de texto con altura automática, Use sigue con javascript puro,

function auto_height(elem) {  /* javascript */
    elem.style.height = "1px";
    elem.style.height = (elem.scrollHeight)+"px";
}
.auto_height { /* CSS */
  width: 100%;
}
<textarea rows="1" class="auto_height" oninput="auto_height(this)"></textarea>

Prasad Gayan
fuente
0

La entrada no admite múltiples líneas. Necesita usar un área de texto para lograr esa característica.

<textarea name="Text1"></textarea>

Recuerde que <textarea>tienen el valor dentro de la etiqueta , no en el atributo:

<textarea>INITIAL VALUE GOES HERE</textarea>

No se puede cerrar a sí mismo como: <textarea/>


Para obtener más información, eche un vistazo a esto .

IgniteCoders
fuente
0

Si está utilizando React, la biblioteca material-ui.com puede ayudarlo con:

  <FormControl>
    <InputLabel htmlFor="textContract">{`textContract`}</InputLabel>
    <Input
      id="textContract"
      multiline
      rows="30"
      type="text"
      value={props.textContract}
      onChange={() => {}}
    />
  </FormControl>

https://material-ui.com/components/text-fields/#multiline

Alan
fuente
-2

Usar <div contenteditable="true">( bien soportado ) con almacenamiento en <input type="hidden">.

HTML:

<div id="multilineinput" contenteditable="true"></div>
<input type="hidden" id="detailsfield" name="detailsfield">

js (usando jQuery)

$("#multilineinput").on('keyup',function(e) {   
    $("#detailsfield").val($(this).text()); //store content to input[type=hidden]
});
//optional - one line but wrap it
$("#multilineinput").on('keypress',function(e) {    
    if(e.which == 13) { //on enter
        e.preventDefault(); //disallow newlines     
        // here comes your code to submit
    }
});
Fanky
fuente