textarea 自适应高度,js和angular两个版本

angular 版本----------

pc   移动端都经过测试,没问题 放心用吧!

directiveApp.directive(‘autoHeight‘function(){

      function autoHeight(elem){

          elem.style.height = ‘auto‘;

          elem.scrollTop = 0; //防抖动

          elem.style.height = elem.scrollHeight + ‘px‘;

      }

      return {

          scope: {},

          link: function (scope, ele, attrs) {

              var oriEle = $(ele).get(0);

              $(oriEle).focus();

              $(oriEle).bind(‘keyup click‘function(e) {

                  autoHeight($(this).get(0));

              });

              var timer = setInterval(function(){

                  if($(oriEle).val()) {

                      autoHeight(oriEle);

                      clearInterval(timer);

                  }

              }, 100);

          }

      };

  });<br>


1

2

Html code:

  <textarea auto-height></textarea>

-------------------------------------------------------------------------------------------------------------------------------

js版本

1.引入Jquery.

<script id="jquery_183" type="text/javascript" class="library" src="/js/sandbox/jquery/jquery-1.8.3.min.js"></script>

2.引入初始css.

body { background:#fff; }

textarea {width:300px; min-height:60px; overflow:hidden;}

3.加入自适应的JS

$.fn.autoHeight = function(){
    
    function autoHeight(elem){
        elem.style.height = ‘auto‘;
        elem.scrollTop = 0; //防抖动
        elem.style.height = elem.scrollHeight + ‘px‘;
    }
    
    this.each(function(){
        autoHeight(this);
        $(this).on(‘keyup‘, function(){
            autoHeight(this);
        });
    });
 
}
    
    
$(‘textarea[autoHeight]‘).autoHeight();

4.加入textarea

<div><textarea autoHeight="true">textarea</textarea></div>

1.引入Jquery.

<script id="jquery_183" type="text/javascript" class="library" src="/js/sandbox/jquery/jquery-1.8.3.min.js"></script>

2.引入初始css.

body { background:#fff; }

textarea {width:300px; min-height:60px; overflow:hidden;}

3.加入自适应的JS

$.fn.autoHeight = function(){
    
    function autoHeight(elem){
        elem.style.height = ‘auto‘;
        elem.scrollTop = 0; //防抖动
        elem.style.height = elem.scrollHeight + ‘px‘;
    }
    
    this.each(function(){
        autoHeight(this);
        $(this).on(‘keyup‘, function(){
            autoHeight(this);
        });
    });
 
}
    
    
$(‘textarea[autoHeight]‘).autoHeight();

4.加入textarea

<div><textarea autoHeight="true">textarea</textarea></div>

$(function(){
        $.fn.autoHeight = function(){    
        function autoHeight(elem){
            elem.style.height = ‘auto‘;
            elem.scrollTop = 0; //防抖动
            elem.style.height = elem.scrollHeight + ‘px‘;
        }
        this.each(function(){
            autoHeight(this);
            $(this).on(‘keyup‘, function(){
                autoHeight(this);
            });
        });     
    }                
    $(‘textarea[autoHeight]‘).autoHeight();    
})

页面中的textarea直接加属性就行

<textarea  autoHeight="true" readonly="readonly" > </textarea>

原文地址:https://www.cnblogs.com/Blogs-Wang/p/11462658.html

时间: 2024-10-09 03:41:58

textarea 自适应高度,js和angular两个版本的相关文章

div模拟textarea自适应高度

之前在公司做项目的时候,有这么一个需求,要我写一个评论框,可以随着评论的行数增加而自动扩大,最开始我想用textarea实现,但是后来尝试后发现textarea并不适合,textarea的高度不会随着输入行数的增多而增大,于是我上网寻求了下帮助,发现大神张鑫旭的这篇文章<div模拟textarea文本域轻松实现高度自适应>,成功解决我的问题 代码如下: 1 1 <!DOCTYPE html> 2 2 <html lang="en"> 3 3 <

iframe自适应高度js

1 <iframe src="http://www.fufuok.com/" id="iframepage" name="iframepage" frameBorder=0 scrolling=no width="100%" onLoad="iFrameHeight()" ></iframe>Javascript代码: 2 <script type="text/jav

textarea自适应高度

最近做项目遇见了这个自适应高度的问题,也在网上找了些资料,大多选择用DIV模拟textarea,但是这样就有安全性的问题,因为你是可以直接将HTML代码输入进去的. 接下来介绍的这种办法是采用两个textarea,其中一个textarea设置其absolute,设置其不可见.当输入文本的textarea的值变化时,将原本的textarea中的值copy到新的 textarea中,这样可以准确计算高度(注意在copy节点的时候新旧textarea的宽度是一样的). 为什么不直接用原textarea

jQuery让textarea自适应高度

<!doctype html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <textarea name="" id="textarea" class="mytest"></textarea> </body>

jquery文本框textarea自适应高度

浏览器中默认的文本框是不能根据内容的增多变高,只能固定高度有滚动条,体验不是很好,找了很多方法兼容都不行,总算找到个兼容良好的方法: <body> <textarea id="textarea3" style="overflow-y:hidden; height:20px;resize: none"> </textarea> <script type="text/javascript" src="

iframe自适应高度js代码

1 <script type="text/javascript"> 2 function SetWinHeight(obj) { 3 var win = obj; 4 if (document.getElementById) { 5 if (win && !window.opera) { 6 if (win.contentDocument && win.contentDocument.body.offsetHeight) 7 win.heig

给大家分享下坐标转换的代码的JS和Python两个版本的源码【转】

/** * Created by Wandergis on 2015/7/8. * 提供了百度坐标(BD09).国测局坐标(火星坐标,GCJ02).和WGS84坐标系之间的转换 */ /** * 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换 * 即 百度 转 谷歌.高德 * @param bd_lon * @param bd_lat * @returns {*[]} */ function bd09togcj02(bd_lon, bd_lat) { var x_pi = 3

js兼容的Iframe自适应高度

js解决Iframe套用页面,自适应高度的问题. 两个页面,a.html和b.html a.html <div style="border: 1px solid;"> <iframe id="iframeId" src="b.html" frameborder="0"></iframe> </div> <script type="text/javascript&q

div实现自适应高度的textarea,实现angular双向绑定

相信不少同学模拟过腾讯的QQ做一个聊天应用,至少我是其中一个. 过程中我遇到的一个问题就是QQ输入框,自适应高度,最高高度为3row. 如果你也像我一样打算使用textarea,那么很抱歉,你一开始就错了. textarea不是不可以的,然后我是这样错的.(就是监听scroll 如果出现了,就增加1rows 的高度)然而这样真的很挫 textarea.bind('change','keydown'){ if(scrollTop > 0 ) { textarea.rows += 1 } } 正确的