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

Beg*_*ner 374 html

我有一个表格的文本输入:

<input type="text"
       cols="40" 
       rows="5" 
       style="width:200px; height:50px;" 
       name="Text1" 
       id="Text1" 
       value="" />
Run Code Online (Sandbox Code Playgroud)

我试图让它采取多行输入.宽度和高度使盒子更大,但是用户可以输入他想要的所有文本,但它只填充一行.

如何使输入更像textarea?

Óla*_*age 645

您需要使用textarea来获得多行处理.

<textarea name="Text1" cols="40" rows="5"></textarea>
Run Code Online (Sandbox Code Playgroud)

  • textarea标签不能自动关闭.`<textarea \>`无效. (55认同)
  • @alexH无论textarea如何,这都是错误的斜线.原始答案有自我关闭,但至少它是正确的斜线. (26认同)
  • 是的,但是,`textarea`不支持`pattern`属性.真是太棒了. (4认同)
  • @Adam我知道,但我不能再编辑了.而且我不想删除它,因为在我看来,自动关闭部分很重要. (3认同)
  • 我不喜欢的是,在 JQuery 中,你不能使用“val()”设置文本区域值。您必须“附加”到它。:( (2认同)

小智 54

可以通过为其提供word-break: break-word;属性来创建文本输入多行.(仅在Chrome中测试过)

  • 不再适用于Chrome,在第50版上测试过. (68认同)
  • 该解决方案已过时,大多数浏览器不再支持。使用 &lt;textarea&gt; 代替 (13认同)
  • 在Chrome 39和Safari 8.0.2中看起来不错,但在我的简短测试中看起来不是Firefox 34.:( http://jsfiddle.net/msybs9g7/ (3认同)

Álv*_*lez 47

你不能.设计为多行的唯一HTML表单元素是<textarea>.


the*_*ien 43

使用textarea

<textarea name="textarea" style="width:250px;height:150px;"></textarea>
Run Code Online (Sandbox Code Playgroud)

不要在开始和结束标签之间留下任何空格或者否则这会留下一些空行或空格.


Mat*_*zer 13

检查一下:

TEXTAREA元素创建一个多行文本输入控件


Pra*_*yan 12

如果您需要具有自动高度增加功能的多行文本区域,您可以使用以下简单的 javascript

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

  • PS你想添加overflow:hidden到文本区域,否则它会在实际需要的字母之前添加额外的高度几个字母。 (2认同)
  • 对我来说,这导致当您开始输入时文本区域的高度略有增加。解决方法是将填充设置为 0 并在设置高度后恢复它:https://codepen.io/mrexodia/pen/LYdrBqM (2认同)

Fan*_*nky 8

与存储一起使用<div contenteditable="true">支持良好<input type="hidden">) 。

HTML:

<div id="multilineinput" contenteditable="true"></div>
<input type="hidden" id="detailsfield" name="detailsfield">
Run Code Online (Sandbox Code Playgroud)

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
    }
});
Run Code Online (Sandbox Code Playgroud)


Osa*_*han 7

您应该使用它textarea来支持多行输入。

<textarea rows="4" cols="50">
Here you can write some text to display in the textarea as the default text
</textarea>
Run Code Online (Sandbox Code Playgroud)