javascript - 如何使文本区域变得更高更宽以适应新文本
问题描述
我有一个用于代码编辑器的文本区域,因此有意将其设置为不换行。现在,当用户输入的文本超出 textarea 的范围时,textarea 将获得一个滚动条。我不想要这种行为。相反,我希望 textarea 在x和y 方向上都增长以适应新文本。我目前正在使用以下代码:
function textarea_height(textarea, MaxHeight) {
let textareaRows = textarea.value.split("\n");
if (textareaRows[0] != "undefined" && textareaRows.length < MaxHeight) counter = textareaRows.length;
else if (textareaRows.length >= MaxHeight) counter = MaxHeight;
else counter = 1;
textarea.rows = counter;
let longest = textareaRows.reduce((acc, val) => val.length > acc.length ? val : acc);
textarea.cols = longest.length;
}
我已将其应用于input
, change
,keydown
和keyup
listeners。这段代码非常适合高度,但宽度有点奇怪。对于溢出的前几列,但文本区域仍然得到一个滚动条。提前感谢您的帮助!
解决方案
推荐阅读
- elasticsearch - Elasticsearch Completion Suggester 忽略 Index 参数并返回多个索引的结果
- docker - 使用 docker 安装后 Nginx 目录 /etc/nginx 为空
- sql - 如何使用匹配的键同时插入客户和订单信息
- php - 将 symfony 4.3 更新到 4.4 调用未定义的方法 phpDocumentor\Reflection\DocBlock\Tags\InvalidTag::getType()
- javascript - nuxt.js axios 没有向 localhost 而不是网站 url 发送请求
- r - 绘制 log(10) 长度不同
- elasticsearch - 不同机器上的 Logstash 和 elasticsearch
- excel - 打开工作簿时填充组合框
- erlang - Erlang Cowboy,服务器端事件,事件源关闭并大约每 60 秒重新连接一次
- javascript - 如何从反应模式组件重定向到页面