12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /*!
- * ----------------------------------------------------------------------------
- * "THE BEER-WARE LICENSE" (Revision 42):
- * <jevin9@gmail.com> 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('<div class="autogrow-textarea-mirror"></div>');
- 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(/ /g, ' ')
- .replace(/\n/g, '<br />') +
- (settings.extraLine? '.<br/>.' : '')
- ;
- 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);
- });
- };
|