Plusieurs lignes d'entrée dans <type d'entrée = "texte" />


403

J'ai cette entrée de texte sous une forme:

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

J'essaie de le faire prendre plusieurs lignes d'entrée. La largeur et la hauteur rendent la boîte plus grande, mais l'utilisateur peut saisir tout le texte qu'il souhaite, mais il ne remplit qu'une seule ligne.

Comment rendre l'entrée plus semblable à une zone de texte?

Réponses:


676

Vous devez utiliser une zone de texte pour obtenir une gestion multiligne.

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


62
Et la balise textarea ne peut pas se fermer automatiquement. <textarea \>est invalide.
Alex H

29
@alexH indépendamment de la zone de texte, c'est la mauvaise barre oblique. La réponse originale avait une fermeture automatique, mais au moins c'était la bonne barre oblique.
Adam

4
@Adam je sais, mais je ne peux plus le modifier. Et je ne veux pas l'enlever, car à mon avis la partie à fermeture automatique est importante.
Alex H

4
Oui, mais textareane prend pas en charge l' patternattribut. Bon sang.
toddmo

1
ce que je n'aime pas, c'est que dans JQuery, vous ne pouvez pas définir la valeur de la zone de texte à l'aide de val(). Vous devez le faire append. :(
Malcolm Salvador

59

Il est possible de faire une saisie de texte sur plusieurs lignes en lui word-break: break-word;attribuant l' attribut. (Testé uniquement dans Chrome)


1
Merci! J'ai remarqué que Chrome autorisait plusieurs lignes pour les entrées, ce que je ne voulais absolument pas, et la raison était le saut de mot qui a été hérité de l'élément body
rap1ds

3
Semble bien dans Chrome 39 et Safari 8.0.2, mais pas Firefox 34 dans mes brefs tests. :( jsfiddle.net/msybs9g7
Jeremy Wadhams

5
Je pense que cela ne fonctionne plus dans Chrome.
Fifi

53

Tu ne peux pas. Au moment de la rédaction du présent document, le seul élément de formulaire HTML conçu pour être multiligne est <textarea>.


49

Utilisez la zone de texte

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

ne laissez aucun espace entre les balises d'ouverture et de fermeture. Sinon, cela laissera des lignes ou des espaces vides.



7

Vous devez utiliser textareapour prendre en charge les entrées sur plusieurs lignes.

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

1

Si vous avez besoin d'une zone de texte avec hauteur automatique, utilisez la suite avec du javascript pur,

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

L'entrée ne prend pas en charge plusieurs lignes. Vous devez utiliser une zone de texte pour obtenir cette fonctionnalité.

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

N'oubliez pas qu'ils <textarea>ont la valeur à l'intérieur de la balise , pas dans l'attribut:

<textarea>INITIAL VALUE GOES HERE</textarea>

Il ne peut pas être fermé automatiquement car: <textarea/>


Pour plus d'informations, jetez un œil à ceci .


0

Si vous utilisez React, la bibliothèque material-ui.com peut vous aider avec:

  <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

Utilisez <div contenteditable="true">( bien pris en charge ) avec le stockage sur <input type="hidden">.

HTML:

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

js (en utilisant 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
    }
});
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.