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?

Respuestas:


676

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

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


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)


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


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.



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>

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>


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 .


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


-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
    }
});
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.