zoukankan      html  css  js  c++  java
  • 根据输入内容的长度自动调整文本域的高度

    /**
     *  根据输入内容的长度自动调整文本域的高度
     */
    
    /**
     * 
     * @param {被监听的元素, 默认是window} textareaElem 
     * @param {文本域的最小高度, 默认是32} minHeight 
     * @param {文本域的最大高度, 默认是500} maxHeight 
     * 
     */
    
    // adjustTextareaHeight.js
    
    function adjustTextareaHeight(textareaElem = window, minHeight = 32, maxHeight = 500) {
        textareaElem.addEventListener('input', function (e) {
            var tElem = e.target;
            if (tElem.tagName !== 'TEXTAREA') return;
            
            var unit = 'px'
            var diff = tElem.offsetHeight - tElem.clientHeight;
            
            tElem.style.height = 0; // 设置高度为0是为了改变tElem.scrollHeight
    
            if (tElem.scrollHeight <= minHeight){
                tElem.style.height = minHeight + unit;
            } else if(tElem.scrollHeight >= maxHeight) {
                tElem.style.height = maxHeight + unit;
            } else{
                tElem.style.height = tElem.scrollHeight + diff + unit;
            }
    
        });
    
    }

    使用示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>adjustTextareaHeightDemo</title>
    </head>
    <body>
        <textarea  style="padding: 10px;" rows="2" cols="40"></textarea>
    
        <script src="../adjustTextareaHeight.js"></script>
        <script>
            adjustTextareaHeight()
        </script>
    </body>
    </html>

    在页面上的效果:

    输入前:

     输入部分内容后文本域自动变长:

     当输入的内容达到最大长度时会显示滚动条:

     删除部分内容后文本域自动变短:

     源码地址: https://github.com/1061186575/JS-Library

  • 相关阅读:
    04 UUID
    MD5加密算法(信息摘要算法)、Base64算法
    03 MD5加密、Base64处理
    MVC分层思想、SSM编程架构
    1网络编程基本概念
    Tomcat闪退的解决办法
    win10下的jdk1.8安装
    枚举练习
    1000元买物品分配
    win10解决vc++6.0不兼容问题方法
  • 原文地址:https://www.cnblogs.com/zp106/p/12305245.html
Copyright © 2011-2022 走看看