You are on page 1of 4

Create a expandable Text area like face boook

Hi friends if you see the text area in face book for replying message it going to be nice
and good one.

It is going to be expand for particular distance after that only it going to make the scroll
bar.You can also make this by using Jquery.

Here is the code for HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery/jquery-1.3.2.min.js"></script>
<!--<script type="text/javascript" src="jquery.autogrow-
1.2.2/jquery.autogrow.js"></script>-->
<script type="text/javascript" src="jquery/autoextendtextarea.js"></script>
<title>Untitled Document</title>
<script>
$(document).ready(function(){
$('textarea#comment').autoResize({
// On resize:
onResize : function() {
$(this).css({opacity:0.8});
},
// After resize:
animateCallback : function() {
$(this).css({opacity:1});
},
// Quite slow animation:
animateDuration : 300,
// More extra space:
extraSpace : 40
});
});
</script>
</head>

<body>
<textarea style="line-height:10px min-height:30px" id='comment'></textarea>
</body>
</html>
The Jquery Plugin for this is

// JavaScript Document
/*
* jQuery autoResize (textarea auto-resizer)
* @copyright James Padolsey http://james.padolsey.com
* @version 1.04
*/
//Source:http://james.padolsey.com/javascript/jquery-plugin-autoresize/
(function($){

$.fn.autoResize = function(options) {

// Just some abstracted details,


// to make plugin users happy:
var settings = $.extend({
onResize : function(){},
animate : true,
animateDuration : 150,
animateCallback : function(){},
extraSpace : 20,
limit: 1000
}, options);

// Only textarea's auto-resize:


this.filter('textarea').each(function(){

// Get rid of scrollbars and disable WebKit resizing:


var textarea = $(this).css({resize:'none','overflow-y':'hidden'}),

// Cache original height, for use later:


origHeight = textarea.height(),

// Need clone of textarea, hidden off screen:


clone = (function(){

// Properties which may effect space taken up by chracters:


var props = ['height','width','lineHeight','textDecoration','letterSpacing'],
propOb = {};

// Create object of styles to apply:


$.each(props, function(i, prop){
propOb[prop] = textarea.css(prop);
});
// Clone the actual textarea removing unique properties
// and insert before original textarea:
return textarea.clone().removeAttr('id').removeAttr('name').css({
position: 'absolute',
top: 0,
left: -9999
}).css(propOb).attr('tabIndex','-1').insertBefore(textarea);

})(),
lastScrollTop = null,
updateSize = function() {

// Prepare the clone:


clone.height(0).val($(this).val()).scrollTop(10000);

// Find the height of text:


var scrollTop = Math.max(clone.scrollTop(), origHeight) +
settings.extraSpace,
toChange = $(this).add(clone);

// Don't do anything if scrollTip hasen't changed:


if (lastScrollTop === scrollTop) { return; }
lastScrollTop = scrollTop;

// Check for limit:


if ( scrollTop >= settings.limit ) {
$(this).css('overflow-y','');
return;
}
// Fire off callback:
settings.onResize.call(this);

// Either animate or directly apply height:


settings.animate && textarea.css('display') === 'block' ?
toChange.stop().animate({height:scrollTop}, settings.animateDuration,
settings.animateCallback)
: toChange.height(scrollTop);
};

// Bind namespaced handlers to appropriate events:


textarea
.unbind('.dynSiz')
.bind('keyup.dynSiz', updateSize)
.bind('keydown.dynSiz', updateSize)
.bind('change.dynSiz', updateSize);
});

// Chain:
return this;

};

})(jQuery);

Here all the credits go to Source:<a href='http://james.padolsey.com/javascript/jquery-


plugin-autoresize/'>james.padolsey</a>

Leave the comment to improve us

Visit http://technotiger87.blogspot.com/ for more information

You might also like