Blame view

frontend/web/js/autoresize.jquery.js 2.34 KB
ce681848   Administrator   firs page
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
  (function($){
      $.fn.autoResize = function(options) {
  
          var settings = $.extend({
              onResize : function(){
  				 
  			},
              animate : true,
              animateDuration : 150,
              animateCallback : function(){},
              extraSpace : 20,
              limit: 1000
          }, options);
  
          this.filter('textarea').each(function(){
  
                  // Get rid of scrollbars and disable WebKit resizing:
              var textarea = $(this).css({resize:'none','overflow-y':'hidden'}),
  
                  origHeight = textarea.height(),
  
                  clone = (function(){
  
                      var props = ['height','width','lineHeight','textDecoration','letterSpacing'],
                          propOb = {};
  
                      $.each(props, function(i, prop){
                          propOb[prop] = textarea.css(prop);
                      });
  
                      return textarea.clone().removeAttr('id').removeAttr('name').css({
                          position: 'absolute',
                          top: 0,
                          left: -9999
                      }).css(propOb).attr('tabIndex','-1').insertBefore(textarea);
  					
                  })(),
                  lastScrollTop = null,
                  updateSize = function() {
                      clone.height(0).val($(this).val()).scrollTop(10000);
  
                      var scrollTop = Math.max(clone.scrollTop(), origHeight) + settings.extraSpace,
                          toChange = $(this).add(clone);
  
                      if (lastScrollTop === scrollTop) { return; }
                      lastScrollTop = scrollTop;
  
                      if ( scrollTop >= settings.limit ) {
                          $(this).css('overflow-y','');
                          return;
                      }
  
                      settings.onResize.call(this);
  
                     settings.animate && textarea.css('display') === 'block' ?
                          toChange.stop().animate({height:scrollTop}, settings.animateDuration, settings.animateCallback)
                          : toChange.height(scrollTop);
  						
  					
                  };
  
              textarea
                  .unbind('.dynSiz')
                  .bind('keyup.dynSiz', updateSize)
                  .bind('keydown.dynSiz', updateSize)
                  .bind('change.dynSiz', updateSize);
              
          });
  
          return this;
          
      };
  })(jQuery);