<textarea>多行文本域
定义和用法
<textarea> 标签定义多行的文本输入控件。
文本区中可容纳无限数量的文本,其中的文本的默认字体是等宽字体(通常是 Courier)。
可以通过 cols 和 rows 属性来规定 textarea 的尺寸,不过更好的办法是使用 CSS 的 height 和 width 属性。
注释:在文本输入区内的文本行间,用 "%OD%OA" (回车/换行)进行分隔。
提示:可以通过 <textarea> 标签的 wrap 属性设置文本输入区内的换行模式。
autofocus | autofocus | 规定在页面加载后文本区域自动获得焦点。 |
cols | number | 规定文本区内的可见宽度。 |
disabled | disabled | 规定禁用该文本区。 |
form | form_id | 规定文本区域所属的一个或多个表单。 |
maxlength | number | 规定文本区域的最大字符数。 |
name | name_of_textarea | 规定文本区的名称。 |
placeholder | text | 规定描述文本区域预期值的简短提示。 |
readonly | readonly | 规定文本区为只读。 |
required | required | 规定文本区域是必填的。 |
rows | number | 规定文本区内的可见行数。 |
wrap |
|
规定当在表单中提交时,文本区域中的文本如何换行。。 |
禁止<textarea>拉伸的方式是设置 style="resize:none" 样式
问题一: <textarea> 高度不能自适应
解决:用 div + 属性 代替
<div class="textarea" contenteditable=true>{内容... }</div>
react 会警告,防止 react 的警告,再加一个属性
suppressContentEditableWarning=true V15以上可用
tabIndex="-1" 让 div 拥有焦点,模拟 input ,可以使用 onFocus、onBlur,等。
注意:虽然是模仿 input ,却无法使用 onChange 事件,可以在 "失焦onblur"、"键盘抬起onkeyup"、等事件 中获取 ev.target.innerText 来操作修改内容
<div class="textarea" contenteditable={true} suppressContentEditableWarning={true} tabIndex="-1" >{内容... }</div>