javascript - Textarea高度自适应,addEventListener("input", funcName);无效
巴扎黑
巴扎黑 2017-04-11 13:22:23
0
3
496

参照的思路是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"属性。

巴扎黑
巴扎黑

全部回覆(3)
大家讲道理

input是什么事件,根本没听说过

左手右手慢动作

应该是onkeydown事件吧

Ty80
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.input {
    padding: 10px;
    width: 500px;
    min-height: 150px;
    border: 1px solid #ccc;
    resize: none;
    font-size: 20px;
    line-height:30px;
    overflow: hidden;
    word-wrap: break-word;
}
.hide {
    position: absolute;
    z-index: -100;
    visibility: hidden;
}
</style>
</head>
<body>
<pre class="input hide" id="pre"></pre>
<textarea class="input" id="textarea" placeholder="输入文字"></textarea>
<script>
var textarea = document.getElementById('textarea');
var pre = document.getElementById('pre');
textarea.oninput = function() {
    pre.textContent = textarea.value;
    textarea.style.height = pre.offsetHeight + 'px';
}
</script>
</body>
</html>

基本思路:利用另外一个html标签元素,设置成跟textarea一样的样式,当textarea输入文字内容时候,就将内容填充到该标签元素内,然后再将该元素的高度赋值给textarea;为什么要用pre标签,因为它不仅要接收textarea的文字内容,还要接收格式,比如回车,只有pre标签能够以原格式输出,如果是别的html标签就需要额外写css了

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板