/*! * ---------------------------------------------------------------------------- * "THE BEER-WARE LICENSE" (Revision 42): * wrote this file. As long as you retain this notice you * can do whatever you want with this stuff. If we meet some day, and you think * this stuff is worth it, you can buy me a beer in return. Jevin O. Sewaruth * ---------------------------------------------------------------------------- * * Autogrow Textarea Plugin Version v3.0 * http://www.technoreply.com/autogrow-textarea-plugin-3-0 * * THIS PLUGIN IS DELIVERD ON A PAY WHAT YOU WHANT BASIS. IF THE PLUGIN WAS USEFUL TO YOU, PLEASE CONSIDER BUYING THE PLUGIN HERE : * https://sites.fastspring.com/technoreply/instant/autogrowtextareaplugin * * Date: October 15, 2012 * * Zammad modification: remove overflow:hidden when maximum height is reached * */ jQuery.fn.autoGrow = function(options) { return this.each(function() { var settings = jQuery.extend({ extraLine: true, }, options); var createMirror = function(textarea) { jQuery(textarea).after('
'); return jQuery(textarea).next('.autogrow-textarea-mirror')[0]; } var sendContentToMirror = function (textarea) { mirror.innerHTML = String(textarea.value) .replace(/&/g, '&') .replace(/"/g, '"') .replace(/'/g, ''') .replace(//g, '>') .replace(/ /g, ' ') .replace(/\n/g, '
') + (settings.extraLine? '.
.' : '') ; if (jQuery(textarea).height() != jQuery(mirror).height()) { jQuery(textarea).height(jQuery(mirror).height()); var maxHeight = parseInt(jQuery(textarea).css('max-height'), 10); var overflow = jQuery(mirror).height() > maxHeight ? '' : 'hidden' jQuery(textarea).css('overflow', overflow); } } var growTextarea = function () { sendContentToMirror(this); } // Create a mirror var mirror = createMirror(this); // Style the mirror mirror.style.display = 'none'; mirror.style.wordWrap = 'break-word'; mirror.style.whiteSpace = 'normal'; mirror.style.padding = jQuery(this).css('paddingTop') + ' ' + jQuery(this).css('paddingRight') + ' ' + jQuery(this).css('paddingBottom') + ' ' + jQuery(this).css('paddingLeft'); mirror.style.width = jQuery(this).css('width'); mirror.style.fontFamily = jQuery(this).css('font-family'); mirror.style.fontSize = jQuery(this).css('font-size'); mirror.style.lineHeight = jQuery(this).css('line-height'); // Style the textarea this.style.overflow = "hidden"; this.style.minHeight = this.rows+"em"; // Bind the textarea's event this.onkeyup = growTextarea; // Fire the event for text already present sendContentToMirror(this); }); };