mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-11-27 14:29:22 +00:00
55 lines
1.4 KiB
JavaScript
55 lines
1.4 KiB
JavaScript
|
/*!
|
||
|
* jQuery Textarea AutoSize plugin
|
||
|
* Author: Javier Julio
|
||
|
* Licensed under the MIT license
|
||
|
*/
|
||
|
;(function ($, window, document, undefined) {
|
||
|
|
||
|
var pluginName = "textareaAutoSize";
|
||
|
var pluginDataName = "plugin_" + pluginName;
|
||
|
|
||
|
var containsText = function (value) {
|
||
|
return (value.replace(/\s/g, '').length > 0);
|
||
|
};
|
||
|
|
||
|
function Plugin(element, options) {
|
||
|
this.element = element;
|
||
|
this.$element = $(element);
|
||
|
this.init();
|
||
|
}
|
||
|
|
||
|
Plugin.prototype = {
|
||
|
init: function() {
|
||
|
var height = this.$element.outerHeight();
|
||
|
var diff = parseInt(this.$element.css('paddingBottom')) +
|
||
|
parseInt(this.$element.css('paddingTop')) || 0;
|
||
|
|
||
|
if (containsText(this.element.value)) {
|
||
|
this.$element.height(this.element.scrollHeight - diff);
|
||
|
}
|
||
|
|
||
|
// keyup is required for IE to properly reset height when deleting text
|
||
|
this.$element.on('input keyup', function(event) {
|
||
|
var $window = $(window);
|
||
|
var currentScrollPosition = $window.scrollTop();
|
||
|
|
||
|
$(this)
|
||
|
.height(0)
|
||
|
.height(this.scrollHeight - diff);
|
||
|
|
||
|
$window.scrollTop(currentScrollPosition);
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
$.fn[pluginName] = function (options) {
|
||
|
this.each(function() {
|
||
|
if (!$.data(this, pluginDataName)) {
|
||
|
$.data(this, pluginDataName, new Plugin(this, options));
|
||
|
}
|
||
|
});
|
||
|
return this;
|
||
|
};
|
||
|
|
||
|
})(jQuery, window, document);
|