参照的思路是segmentfault以前提过的问题
对前端不是很了解,基本完全按照上面的那个思路写的。但是在Chrome53上面运行还是会出现scrollbar,不会自适应高度。请问这是不是有可能是addEventListener无法接听input事件呢?
html代码
<p class="expandingArea ">
<pre><span></span><br></pre>
<textarea placeholder="输入文字"></textarea>
</p>
js代码
function makeExpandingArea(container) {
var area = container.querySelector('textarea');
var span = container.querySelector('span');
area.addEventListener('input', function() {
span.textContent = area.value;
}, false);
span.textContent = area.value;
}
var areas = document.querySelectorAll('p');
var l = areas.length;
console.log("%d", l);
while (l--) {
makeExpandingArea(areas[l]);
}
css代码
.expandingArea{
position:relative;
}
textarea{
position:absolute;
top:0;
left:0;
height:100%;
}
pre{
display:block;
visibility:hidden;
}
如果这个方法行不通的话能不能推荐一些可行的方法?主要用处是做一个博客的评论框,因为要提交form,所以又不能使用p的contenteditable="true"属性。
input是什么事件,根本没听说过
应该是onkeydown事件吧
基本思路:利用另外一个html标签元素,设置成跟textarea一样的样式,当textarea输入文字内容时候,就将内容填充到该标签元素内,然后再将该元素的高度赋值给textarea;为什么要用pre标签,因为它不仅要接收textarea的文字内容,还要接收格式,比如回车,只有pre标签能够以原格式输出,如果是别的html标签就需要额外写css了