61 lines
1.4 KiB
JavaScript
61 lines
1.4 KiB
JavaScript
/*!
|
|
* Autogrow Textarea Plugin Version v2.0
|
|
* http://www.technoreply.com/autogrow-textarea-plugin-version-2-0
|
|
*
|
|
* Copyright 2011, Jevin O. Sewaruth
|
|
*
|
|
* Date: March 13, 2011
|
|
*/
|
|
jQuery.fn.autoGrow = function(){
|
|
return this.each(function(){
|
|
// Variables
|
|
var colsDefault = this.cols;
|
|
var rowsDefault = this.rows;
|
|
|
|
//Functions
|
|
var grow = function() {
|
|
growByRef(this);
|
|
}
|
|
|
|
var growByRef = function(obj) {
|
|
var linesCount = 0;
|
|
var lines = obj.value.split('\n');
|
|
|
|
for (var i=lines.length-1; i>=0; --i)
|
|
{
|
|
linesCount += Math.floor((lines[i].length / colsDefault) + 1);
|
|
}
|
|
|
|
if (linesCount >= rowsDefault)
|
|
obj.rows = linesCount + 1;
|
|
else
|
|
obj.rows = rowsDefault;
|
|
}
|
|
|
|
var characterWidth = function (obj){
|
|
var characterWidth = 0;
|
|
var temp1 = 0;
|
|
var temp2 = 0;
|
|
var tempCols = obj.cols;
|
|
|
|
obj.cols = 1;
|
|
temp1 = obj.offsetWidth;
|
|
obj.cols = 2;
|
|
temp2 = obj.offsetWidth;
|
|
characterWidth = temp2 - temp1;
|
|
obj.cols = tempCols;
|
|
|
|
return characterWidth;
|
|
}
|
|
|
|
// Manipulations
|
|
this.style.width = "auto";
|
|
this.style.height = "auto";
|
|
this.style.overflow = "hidden";
|
|
this.style.width = ((characterWidth(this) * this.cols) + 6) + "px";
|
|
this.onkeyup = grow;
|
|
this.onfocus = grow;
|
|
this.onblur = grow;
|
|
growByRef(this);
|
|
});
|
|
}; |