Update jQuery Autogrow Textarea Plugin to v3.0
This commit is contained in:
parent
7614534bdb
commit
96d5517a9b
2 changed files with 56 additions and 51 deletions
|
@ -25,4 +25,10 @@ folder 'vendor/assets' do
|
|||
file 'leaflet.osm.js', 'leaflet-osm.js'
|
||||
end
|
||||
end
|
||||
|
||||
folder 'jquery' do
|
||||
from 'git://github.com/jevin/Autogrow-Textarea.git' do
|
||||
file 'jquery.autogrowtextarea.js', 'jquery.autogrowtextarea.js'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
101
vendor/assets/jquery/jquery.autogrowtextarea.js
vendored
101
vendor/assets/jquery/jquery.autogrowtextarea.js
vendored
|
@ -1,61 +1,60 @@
|
|||
/*!
|
||||
* Autogrow Textarea Plugin Version v2.0
|
||||
* http://www.technoreply.com/autogrow-textarea-plugin-version-2-0
|
||||
/*
|
||||
* ----------------------------------------------------------------------------
|
||||
* "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
|
||||
* ----------------------------------------------------------------------------
|
||||
*
|
||||
* Copyright 2011, 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: March 13, 2011
|
||||
* Date: October 15, 2012
|
||||
*/
|
||||
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;
|
||||
jQuery.fn.autoGrow = function() {
|
||||
return this.each(function() {
|
||||
|
||||
var createMirror = function(textarea) {
|
||||
jQuery(textarea).after('<div class="autogrow-textarea-mirror"></div>');
|
||||
return jQuery(textarea).next('.autogrow-textarea-mirror')[0];
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
var sendContentToMirror = function (textarea) {
|
||||
mirror.innerHTML = String(textarea.value).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>').replace(/\n/g, '<br />') + '.<br/>.';
|
||||
|
||||
if (jQuery(textarea).height() != jQuery(mirror).height())
|
||||
jQuery(textarea).height(jQuery(mirror).height());
|
||||
}
|
||||
|
||||
var growTextarea = function () {
|
||||
sendContentToMirror(this);
|
||||
}
|
||||
|
||||
// Create a mirror
|
||||
var mirror = createMirror(this);
|
||||
|
||||
// Manipulations
|
||||
this.style.width = "auto";
|
||||
this.style.height = "auto";
|
||||
// Style the mirror
|
||||
mirror.style.display = 'none';
|
||||
mirror.style.wordWrap = 'break-word';
|
||||
mirror.style.padding = jQuery(this).css('padding');
|
||||
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.width = ((characterWidth(this) * this.cols) + 6) + "px";
|
||||
this.onkeyup = grow;
|
||||
this.onfocus = grow;
|
||||
this.onblur = grow;
|
||||
growByRef(this);
|
||||
this.style.minHeight = this.rows+"em";
|
||||
|
||||
// Bind the textarea's event
|
||||
this.onkeyup = growTextarea;
|
||||
|
||||
// Fire the event for text already present
|
||||
sendContentToMirror(this);
|
||||
|
||||
});
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue