Кілька рядків введення в <введення типу = "текст" />


403

У мене цей текст вводиться у формі:

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

Я намагаюся змусити його взяти кілька рядків введення. Ширина та висота роблять поле більшим, але користувач може вводити всі тексти, які він хоче, але він заповнює лише один рядок.

Як зробити вклад більш схожим на textarea?

Відповіді:


676

Для отримання багаторядкової обробки вам потрібно скористатися текстовою областю.

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


62
І тег textarea не може самозакриватися. <textarea \>недійсний.
Алекс Н

29
@alexH незалежно від textarea, це неправильна коса риса. Оригінальна відповідь мала самозакриття, але, принаймні, це була правильна коса риса.
Адам

4
@Adam Я знаю, але я більше не можу редагувати. І я не хочу його знімати, тому що, на мою думку, важлива самозакриваюча частина.
Алекс Н

4
Так, але атрибут textareaне підтримує pattern. Так чорт.
toddmo

1
що мені не подобається в тому, що в JQuery ви не можете встановити значення textarea за допомогою val(). Ви повинні appendдо цього. :(
Малькольм Сальвадор

59

Можна зробити багаторядковий введення тексту, надавши йому word-break: break-word;атрибут. (Тестується лише в Chrome)


1
Дякую! Я помітив, що Chrome допускає введення декількох рядків для введення даних, чого я абсолютно не хотів, і причиною стала перерва на слово, яка була успадкована від елемента body
rap1ds

3
Добре виглядає в Chrome 39 та Safari 8.0.2, але не в Firefox 34 в моєму короткому тестуванні. :( jsfiddle.net/msybs9g7
Jeremy Wadhams

5
Я думаю, це більше не працює в Chrome.
Fifi


49

Використовуйте textarea

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

не залишайте пробілу між тегами, що відкриваються і закриваються, або іншим. Це залишить порожні рядки або пробіли.



7

Ви повинні використовувати textareaдля підтримки багаторядкових входів.

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

1

Якщо вам потрібна текстова область з автоматичною висотою, Використовуйте наступний чистий javascript,

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

Введення не підтримує кілька рядків. Для досягнення цієї функції вам потрібно використовувати текстову область .

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

Remeber , що <textarea>має значення всередині тега , а не в атрибуті:

<textarea>INITIAL VALUE GOES HERE</textarea>

Вона не може бути самозакритою, оскільки: <textarea/>


Для отримання додаткової інформації погляньте на це .


0

Якщо ви використовуєте React, бібліотека material-ui.com може допомогти вам у:

  <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

Використовуйте <div contenteditable="true">( підтримується добре ) для зберігання в <input type="hidden">.

HTML:

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

js (використовуючи 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
    }
});
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.