当用户在文本区域中写入任何内容时,并按Enter键移至新行时,将创建一个字符'\n'
。
如果用户继续写直到行到末尾,然后在不按Enter键的情况下自动转到新行该怎么办?在这种情况下,我该如何知道呢?
下面的代码将在按Enter键时增加文本区域,并且我希望在不按Enter键的情况下自动转到新行时也执行相同的操作:
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>
最佳答案
有多个库可以为您执行此操作。例如。
http://www.jacklmoore.com/autosize/
https://alexdunphy.github.io/flexText/
编辑:
由于您不想直接使用该库,因此我选择了the code of the jacklmoores autosize。
它所做的基本上是将高度设置为auto,然后将滚动高度用作文本区域的高度。我还将您的onkeyup更改为onkeydown,以便在按住键时调整其大小。
var textarea = document.getElementById('text');
textarea.onkeydown = function (eve) {
textarea.style.height = 'auto'
textarea.style.height = textarea.scrollHeight+'px';
}
JSFiddle