46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
(function($) {
|
|
|
|
/*
|
|
* Auto-growing textareas; technique ripped from Facebook
|
|
*/
|
|
$.fn.autogrow = function(options) {
|
|
|
|
this.filter('textarea').each(function() {
|
|
|
|
var $this = $(this),
|
|
minHeight = $this.height(),
|
|
lineHeight = $this.css('lineHeight');
|
|
|
|
var shadow = $('<div></div>').css({
|
|
position: 'absolute',
|
|
top: -10000,
|
|
left: -10000,
|
|
width: $(this).width(),
|
|
fontSize: $this.css('fontSize'),
|
|
fontFamily: $this.css('fontFamily'),
|
|
lineHeight: $this.css('lineHeight'),
|
|
resize: 'none'
|
|
}).appendTo(document.body);
|
|
|
|
var update = function() {
|
|
|
|
var val = this.value.replace(/</g, '<')
|
|
.replace(/>/g, '>')
|
|
.replace(/&/g, '&')
|
|
.replace(/\n/g, '<br/>');
|
|
|
|
shadow.html(val);
|
|
$(this).css('height', Math.max(shadow.height() + 20, minHeight));
|
|
}
|
|
|
|
$(this).change(update).keyup(update).keydown(update);
|
|
|
|
update.apply(this);
|
|
|
|
});
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
})(jQuery); |