Multiple lines of input in <input type="text" />
I have this text input in a form:
<input type="text"
cols="40"
rows="5"
style="width:200px; height:50px;"
name="Text1"
id="Text1"
value="" />
I am trying to get it to take multiple lines of input. The width and height make the box to be bigger, but the 开发者_StackOverflow社区user can enter text all (s)he wants yet it fills one line only.
How do I make the input more like a textarea?
You need to use a textarea to get multiline handling.
<textarea name="Text1" cols="40" rows="5"></textarea>
You can't. At the time of writing, the only HTML form element that's designed to be multi-line is <textarea>
.
It is possible to make a text-input multi-line by giving it the word-break: break-word;
attribute. (Only tested this in Chrome)
Use the textarea
<textarea name="textarea" style="width:250px;height:150px;"></textarea>
don't leave any space between the opening and closing tags Or Else This will leave some empty lines or spaces.
If you need Multiline Textarea with Auto Height Increase feature, You can use following simple 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>
Check this:
- http://www.w3.org/TR/html401/interact/forms.html#h-17.7
The TEXTAREA element creates a multi-line text input control
You should use textarea
to support multiple-line inputs.
<textarea rows="4" cols="50">
Here you can write some text to display in the textarea as the default text
</textarea>
Use <div contenteditable="true">
(supported well) with storing to <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
}
});
If you're using React, you could use the 3rd-party UI library MUI. It has a custom proprietary <Input>
element with a multiline
option.
As LSE commented, ultimately it gets rendered as <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
If you don't need to edit it, you can use a
<span>text here</span>
It will expand with the text.
精彩评论