You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用HTML和JQuery根据内容自动调整textarea高度

刚好做过类似的需求,给你整理了两种靠谱的实现方案,结合你现有的代码就能直接用:

方案一:基于你已引入的jQuery实现

这个方案利用jQuery的事件监听和DOM操作,快速实现自动适配:

在你的lib/script.js文件中添加以下代码:

$(document).ready(function() {
    // 定义自动调整高度的函数
    function autoResizeTextarea($textarea) {
        // 先重置高度为auto,确保内容减少时能收缩
        $textarea.height('auto');
        // 把高度设置为内容实际占据的scrollHeight(包含内边距)
        $textarea.height($textarea[0].scrollHeight);
    }

    // 获取目标textarea元素
    const $targetTextarea = $('#textarea-container');
    // 页面加载完成后,先适配初始内容高度
    autoResizeTextarea($targetTextarea);
    // 监听输入、粘贴、删除等所有内容变化事件
    $targetTextarea.on('input', function() {
        autoResizeTextarea($(this));
    });
});

小提示

如果你的textarea设置了上下内边距(padding-top/padding-bottom),发现高度有偏差的话,可以调整高度计算方式:

$textarea.height(
    $textarea[0].scrollHeight 
    - parseInt($textarea.css('padding-top')) 
    - parseInt($textarea.css('padding-bottom'))
);
方案二:原生JavaScript实现(无框架依赖)

如果不想依赖jQuery,用原生JS也能轻松实现,代码更轻量化:

同样在lib/script.js中添加:

document.addEventListener('DOMContentLoaded', function() {
    const textarea = document.getElementById('textarea-container');

    function autoResizeTextarea(element) {
        element.style.height = 'auto';
        element.style.height = `${element.scrollHeight}px`;
    }

    // 初始化适配初始内容
    autoResizeTextarea(textarea);
    // 监听内容变化事件
    textarea.addEventListener('input', function() {
        autoResizeTextarea(this);
    });
});
配套CSS优化

为了让体验更好,建议给textarea加一点样式,避免用户手动拖动和出现滚动条:
在lib/style.css中添加:

#textarea-container {
    resize: none; /* 禁止手动调整大小 */
    overflow: hidden; /* 隐藏滚动条 */
    padding: 8px; /* 可选:添加内边距提升可读性 */
    border: 1px solid #ddd; /* 可选:添加边框 */
    min-height: 40px; /* 可选:设置最小高度,避免内容过少时太矮 */
}

这样你的textarea就能完美随着输入内容自动调整高度啦!

内容的提问来源于stack exchange,提问作者user5443928

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:40:13