参照的思路是segmentfault以前提过的问题
对前端不是很了解,基本完全按照上面的那个思路写的。但是在Chrome53上面运行还是会出现scrollbar,不会自适应高度。请问这是不是有可能是addEventListener无法接听input事件呢?
html代码
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了