实现 textarea随内容高度自动变化

原理:生成一个新的textarea,不停获取当前textarea最新的值,然后计算高度赋给当前的textarea

<textarea id="target">

var addHandler = window.addEventListener?
            function(elem,event,handler){elem.addEventListener(event,handler);}:
            function(elem,event,handler){elem.attachEvent("on"+event,handler);};

    var aa = function(id){return document.getElementById(id);}


    function autoTextArea(elemid){
        if(!aa("_textareacopy")){
            var t = document.createElement("textarea");

            t.id="_textareacopy";

           //css 一定要跟当前的 宽度 字体大小保持一致

            t.style.position="absolute";
            t.style.top="-300px";//保证该textarea 在界面看不到
            t.style.width="95%";
            t.style.fontSize="18px";
            t.style.paddingTop="10px";
            document.body.appendChild(t);
        }
        function change(){
            aa("_textareacopy").value= aa(elemid).value;
            aa(elemid).style.height= aa("_textareacopy").scrollHeight+aa("_textareacopy").style.height+"px";
        }
        addHandler(aa("target"),"propertychange",change);
        addHandler(aa("target"),"input",change);
        aa(elemid).style.overflow="hidden";
        aa(elemid).style.resize="none";
    }

    addHandler(window,"load",function(){
        autoTextArea("target");
    });



不过 <div id="textDiv" contenteditable="true"></div> 将div设置成内容可编辑的就可以实现同样效果的textarea 而且还可以带上图片,问题时 有些浏览器可能不支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值