我在一个表单中输入了这个文本:
<input type="text"
cols="40"
rows="5"
style="width:200px; height:50px;"
name="Text1"
id="Text1"
value="" />
我试图让它接受多行输入。宽度和高度使框变大,但用户可以输入所有他想要的文本,但它只填满一行。
如何使输入更像文本区域?
您需要使用 textarea 来进行多行处理。
可以通过给它 word-break: break-word;
属性来创建一个文本输入多行。 (仅在 Chrome 中测试过)
使用文本区域
<textarea name="textarea" style="width:250px;height:150px;"></textarea>
不要在开始标签和结束标签之间留下任何空格 否则这将留下一些空行或空格。
如果您需要具有自动高度增加功能的多行文本区域,您可以使用以下简单的 javascript,
function auto_height(elem) { /* javascript */ elem.style.height = "1px"; elem.style.height = (elem.scrollHeight)+"px"; } .auto_height { /* CSS */ width: 100%; }
检查这个:
http://www.w3.org/TR/html401/interact/forms.html#h-17.7
TEXTAREA 元素创建一个多行文本输入控件
您应该使用 textarea
来支持多行输入。
<textarea rows="4" cols="50">
Here you can write some text to display in the textarea as the default text
</textarea>
将 <div contenteditable="true">
(supported well) 与存储到 <input type="hidden">
一起使用。
HTML:
<div id="multilineinput" contenteditable="true"></div>
<input type="hidden" id="detailsfield" name="detailsfield">
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
}
});
如果您使用 React,则可以使用 3rd-party UI 库 MUI。它有一个带有 multiline
选项的自定义专有 <Input>
元素。
正如 LSE 评论的那样,最终它会呈现为 <textarea>
。
<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
The multiline prop transforms the text field into a <textarea> element.
。所以即使它看起来像一个<input>,它也呈现一个<textarea>。
如果您不需要编辑它,您可以使用
在此输入文字
它将随着文本展开。
不定期副业成功案例分享
<textarea \>
无效。textarea
不支持pattern
属性。真该死。val()
设置 textarea 值。你必须append
到它。 :(