<input type =“ text” />中的多行输入


403

我有以下形式的文本输入:

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

我试图让它接受多行输入。宽度和高度会使框变大,但用户可以输入所有想要的文本,但只能填充一行。

如何使输入更像文本区域?

Answers:


676

您需要使用文本区域来进行多行处理。

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


62
而且textarea标签不能自动关闭。<textarea \>是无效的。
Alex H

29
@alexH与textarea无关,这是错误的斜线。原始答案具有自动关闭功能,但至少是正确的斜杠。
亚当

4
@Adam我知道,但是我不能再编辑了。我也不想删除它,因为在我看来,自动关闭部分很重要。
Alex H

4
是的,但是textarea不支持该pattern属性。真是的
toddmo

1
我对此不满意的是,在JQuery中,您无法使用来设置textarea值val()。你必须append去做。:(
马尔科姆·萨尔瓦多

59

通过赋予word-break: break-word;属性,可以制作多行文本输入。(仅在Chrome中对此进行测试)


1
谢谢!我注意到Chrome允许多行输入,这是我完全不希望的,其原因是断行是从body元素继承而来的
rap1ds 2014年

3
在我的简短测试中,它在Chrome 39和Safari 8.0.2中看起来不错,但在Firefox 34中却不行。:( jsfiddle.net/msybs9g7
Jeremy Wadhams

5
我认为它不再适用于Chrome。
Fifi


49

使用文本区域

<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

如果您需要具有自动高度的textarea,请在纯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>

记住标记中<textarea>,而不是属性中:

<textarea>INITIAL VALUE GOES HERE</textarea>

它不能自我关闭,因为: <textarea/>


有关更多信息,请参阅



-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
    }
});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.