( function ( $ ) { /** * Auto-growing textareas * http://github.com/jaz303/jquery-grab-bag/tree/master/javascripts/jquery.autogrow-textarea.js */ $.fn.autogrow = function ( options ) { return this.filter( 'textarea' ).each( function () { var self = this; var $self = $( self ); var minHeight = $self.height(); var noFlickerPad = $self.hasClass( 'autogrow-short' ) ? 0 : parseInt( $self.css( 'lineHeight' ) ) || 0; var settings = $.extend({ preGrowCallback: null, postGrowCallback: null, }, options ); var shadow = $( '
' ).css({ position: 'absolute', top: -10000, left: -10000, width: $self.width(), fontSize: $self.css('fontSize'), fontFamily: $self.css('fontFamily'), fontWeight: $self.css('fontWeight'), lineHeight: $self.css('lineHeight'), resize: 'none', 'word-wrap': 'break-word' }).appendTo( document.body ); var update = function ( event ) { var times = function ( string, number ) { for ( var i = 0, r = ''; i < number; i++ ) { r += string; } return r; }; var val = self.value.replace( /&/g, '&' ) .replace( //g, '>' ) .replace( /\n$/, '