根据内容指定textarea的行数。HTML、Javascript

根据内容指定textarea的行数。HTML、Javascript,javascript,html,textarea,Javascript,Html,Textarea,嗨,我有一个功能,当用户在文本区域上键入内容时,它可以增加文本区域的行数,所以它可以正常工作。但是,当用户没有输入时,表单将文本带入textarea时,它不会增加行数,但只显示开始时定义的行数(rows=“1”),因为我需要它是最小的行数 我不知道要将什么Javascript(无JQuery)函数应用于textarea,以便在用户键入时以及表单向textarea显示多行文本时扩展行数,因此它将始终使用最少的行数 任何帮助都将不胜感激 请随意改变我所拥有的功能 例如 函数changeTextAr

嗨,我有一个功能,当用户在文本区域上键入内容时,它可以增加文本区域的行数,所以它可以正常工作。但是,当用户没有输入时,表单将文本带入textarea时,它不会增加行数,但只显示开始时定义的行数(rows=“1”),因为我需要它是最小的行数

我不知道要将什么Javascript(无JQuery)函数应用于textarea,以便在用户键入时以及表单向textarea显示多行文本时扩展行数,因此它将始终使用最少的行数

任何帮助都将不胜感激

请随意改变我所拥有的功能

例如


函数changeTextAreaLength(e){
var txtLength=e.value.length;
var numRows=0;
var arrNewLines=e.value.split(“\n”);
对于(var i=0;即cols-5){
numRows+=Math.floor(arrNewLines[i].length/e.cols)
}   
} 
如果(numRows<1){
e、 cols=(txtLength%e.cols)+1>=e.cols?((txtLength%e.cols)+1):e.cols;
}否则{
e、 cols=e.cols;
e、 行=numRows;
}
}
首先,将“功能”更改为“功能”

其次,从onkeyup属性中删除“javascript:”

第三,调用changeTextAreaLength(),但函数名为expandtextarea()

第四,您的函数表示expandtextarea(obj),但在函数中您指的是e,而不是obj


是的,
keyup
几乎不足以捕捉输入内容变化的每一个方面。在进行脚本更改之前,还需要右键单击剪切/复制/粘贴、撤销/重做、拖放和拼写校正。

你没有任何希望抓住所有这些情况,因此如果你想对变化做出一般的实时反应,你别无选择,只能进行投票(例如使用间隔)。如果您想了解一种常见的情况,即只需输入比轮询器更快的延迟,您也可以添加keyup

一个字符计数的替代方案,你也可以考虑检查<代码>滚动高度>代码>,看看文本是否已经开始滚动。例如:

<textarea id="q" rows="4" cols="80">hello</textarea>
<script type="text/javascript">
    function stretchy(element) {
        var value= element.value;
        function update() {
            var h= element.scrollHeight;
            if (h>element.offsetHeight || h<element.offsetHeight-48)
                element.style.height= (h+24)+'px';
        }
        element.onkeyup= update;
        setInterval(update, 1000);
        update();
    }

    stretchy(document.getElementById('q'));
</script>
你好 功能弹性(元素){ var值=元素值; 函数更新(){ var h=元素高度;
如果(h>element.offsetHeight | | hy)您的代码充满错误,请更正
function
打字错误,将函数参数
obj
更改为
e
,并更改函数名称以匹配
onkeyup
中的调用。谢谢,这已经是正确的,我很快就完成了,我没有意识到。
<textarea id="q" rows="4" cols="80">hello</textarea>
<script type="text/javascript">
    function stretchy(element) {
        var value= element.value;
        function update() {
            var h= element.scrollHeight;
            if (h>element.offsetHeight || h<element.offsetHeight-48)
                element.style.height= (h+24)+'px';
        }
        element.onkeyup= update;
        setInterval(update, 1000);
        update();
    }

    stretchy(document.getElementById('q'));
</script>