<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我是FE,也是Fe

    前端來源于不斷的點滴積累。我一直在努力。

    統計

    留言簿(15)

    閱讀排行榜

    評論排行榜

    textarea高度自動增加

    最初看到這個命題,覺得不是不是直接監聽事件然后設計高度么?于是我想當然的寫了這么一段代碼:

    <script type="text/javascript">
    function autoheight(){
    this.height= this.scrollHeight+this.height+"px";
    }

    </script>
    <textarea id="" rows="" cols="" onpropertychange="autoheight();" oninput="autoheight()" style="overflow:hidden;"></textarea>

    這個代碼我沒有運行,因為一邊寫就發現不對勁,在propertychange函數中改變property會再次觸發propertychange事件,結果就可想而知了。stack overflow。

    所以需要換一種思路,新建一個textarea,將同樣大的文本放到屬性一樣的textarea中計算其高度,然后把高度設置到目標textarea中。

    <script type="text/javascript">

        
    //基本函數*2
        var addHandler = window.addEventListener?
        
    function(elem,event,handler){elem.addEventListener(event,handler);}:
        
    function(elem,event,handler){elem.attachEvent("on"+event,handler);};

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

            
        
    function autoTextArea(elemid){
            
    //新建一個textarea用戶計算高度
            if(!$("_textareacopy")){
                
    var t = document.createElement("textarea");
                t.id
    ="_textareacopy";
                t.style.position
    ="absolute";
                t.style.left
    ="-9999px";
                document.body.appendChild(t);
            }
            
    function change(){
                $(
    "_textareacopy").value= $(elemid).value;
                $(elemid).style.height
    = $("_textareacopy").scrollHeight+$("_textareacopy").style.height+"px";
            }
            addHandler($(
    "target"),"propertychange",change);//for IE
            addHandler($("target"),"input",change);// for !IE
            $(elemid).style.overflow="hidden";//一處隱藏,必須的。
            $(elemid).style.resize="none";//去掉textarea能拖拽放大/縮小高度/寬度功能
        }

        addHandler(window,
    "load",function(){
            autoTextArea(
    "target");
        });
    </script>
    <textarea id="target" rows="" cols=""></textarea>

    搞清楚原理其實就簡單多了。要捕捉textarea的change事件在IE下可以使用propertychange,在!IE下可以使用input。

    一些textarea資料做參考:

    1. textarea 的一些小技巧 http://css-tricks.com/textarea-tricks/
    2. 本文的直接資料來源:http://www.planeart.cn/?p=1489

     

     

    posted on 2011-05-15 19:40 衡鋒 閱讀(3361) 評論(1)  編輯  收藏 所屬分類: javascriptWeb開發

    評論

    # re: textarea高度自動增加 2011-09-15 08:35 tbw

    恩 不錯 收藏了   回復  更多評論   

    主站蜘蛛池模板: 亚洲国产综合无码一区二区二三区| 美女视频黄的全免费视频网站| 国产成人高清精品免费软件 | 久久w5ww成w人免费| 亚洲精品乱码久久久久久久久久久久 | 国产亚洲视频在线观看| 国产成人A在线观看视频免费| 亚洲精品一二三区| 成人性生免费视频| 99亚洲男女激情在线观看| 日韩中文无码有码免费视频| 亚洲AV日韩综合一区| 国产成人精品男人免费| 免费人成大片在线观看播放电影| 免费观看四虎精品国产永久| 特黄特色大片免费| 亚洲精品高清国产一线久久| 免费黄网站在线观看| 亚洲欧洲日韩综合| 国内一级一级毛片a免费| 羞羞漫画登录页面免费| 在线观看亚洲天天一三视| 免费人成毛片动漫在线播放| 亚洲精品福利在线观看| 在线不卡免费视频| 国产精品亚洲а∨无码播放不卡| 亚洲一区二区三区免费| 久久不见久久见免费视频7| 亚洲色少妇熟女11p| 亚洲国产一区明星换脸| 日韩午夜理论免费TV影院| 亚洲日韩av无码中文| 中文字幕无码精品亚洲资源网| 久久国产乱子伦精品免费一| 亚洲一区无码中文字幕乱码| 免费人成视频x8x8入口| 99精品免费观看| 国产精品亚洲专区无码唯爱网 | 亚洲av丰满熟妇在线播放| 最近最新的免费中文字幕| xxxxx做受大片在线观看免费|