我想知道用户是否移动到新行而不按textarea元素中的enter按钮

时间:2015-04-15 13:50:50

标签: javascript textarea

当用户在textarea中写入任何内容时,按下enter按钮移动到新行时,会创建一个字符'\n'

如果用户继续写入直到他到达行尾,然后在不按下回车键的情况下自动转到新行,那么怎样才能知道这个呢?

下面的代码会在按下回车键时增加textarea,我想在不按回车按钮的情况下自动转入新行时执行相同的操作:



var textarea = document.getElementById('text');
textarea.onkeyup = function (eve) {
    if (eve.keyCode == 13) { // 13 = enter key
        textarea.style.height = textarea.offsetHeight + 25 + 'px';
    }
};

#text {width:300px;}

<textarea id="text"></textarea>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

有多个库可以为您执行此操作。 E.g。

http://www.jacklmoore.com/autosize/

https://alexdunphy.github.io/flexText/

修改

由于您不想直接使用该库,我检查了the code of the jacklmoores autosize

它的作用基本上是将高度设置为auto,然后使用滚动高度作为textarea的高度。我还将你的onkeyup更改为onkeydown,以便在按住键时调整大小。

var textarea = document.getElementById('text');
textarea.onkeydown = function (eve) {
    textarea.style.height = 'auto'
    textarea.style.height = textarea.scrollHeight+'px';
}

JSFiddle

答案 1 :(得分:-1)

&#13;
&#13;
#text {width:300px;}
&#13;
<textarea id="text"></textarea>
&#13;
$HOME
&#13;
&#13;
&#13;