【发布时间】:2019-09-19 09:56:10
【问题描述】:
这是一个 MERN 堆栈应用程序。我尝试使用this script 使文本区域的高度响应内容。
看起来外部 javascript 文件正在运行,因为我尝试将 alert 放在 for 循环中并且它确实有效。所以我尝试在OnInput() 函数中放置警报,但没有调用alert。因此,我认为这个功能有问题。
index.html
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<script src="/main.js"></script>
</body>
main.js
var tx = document.getElementsByClassName('comment-area-responsive');
for (var i = 0; i < tx.length + 1; i++) {
// alert(i);
tx[i].setAttribute(
'style',
'height:' + tx[i].scrollHeight + 'px;overflow-y:hidden;'
);
tx[i].addEventListener('change', OnInput, false);
}
function OnInput() {
this.style.height = 'auto';
alert('hi2');
this.style.height = this.scrollHeight + 'px';
}
页面
<textarea
className='comment-area-responsive'
name='title'
placeholder='What do you think?'
value={text} onChange={e => setText(e.target.value)}
required
/>
【问题讨论】:
-
您可能调用了您的函数
OnInput,但您将其绑定到的事件是change事件。只有在字段再次失去焦点后才会触发,而不是用户正在输入。 -
我很久以前写了一个 codepen 来在文本过多时更改 textarea 的字体大小,虽然不完全一样但可以提供帮助:codepen.io/elisabeth_hamel/pen/pdLRvv我使用了 keyup 事件
标签: javascript html css reactjs