$.fn.autoTextarea
= function (options) { var
defaults = { maxHeight:
null , //文本框是否自动撑高,默认:null,不自动撑高;如果自动撑高必须输入数值,该值作为文本框自动撑高的最大高度 minHeight:
$( this ).height()
//默认最小高度,也就是文本框最初的高度,当内容高度小于这个高度的时候,文本以这个高度显示 }; var
opts = $.extend({}, defaults, options); return $( this ).each(function
() { $( this ).bind( "paste
cut keydown keyup focus blur" ,
function () { var
height, style = this .style; this .style.height
= opts.minHeight + 'px' ; if ( this .scrollHeight
> opts.minHeight) { if (opts.maxHeight
&& this .scrollHeight
> opts.maxHeight) { height
= opts.maxHeight; style.overflowY
= 'scroll' ; }
else { height
= this .scrollHeight; style.overflowY
= 'hidden' ; } style.height
= height + 'px' ; } }); }); }; |
$.fn.extend({ textareaAutoHeight:
function (options)
{ this ._options
= { minHeight:
0, maxHeight:
1000 } this .init
= function ()
{ for ( var p
in options)
{ this ._options[p]
= options[p]; } if ( this ._options.minHeight
== 0) { this ._options.minHeight
= parseFloat($( this ).height()); } for ( var p
in this ._options)
{ if ($( this ).attr(p)
== null )
{ $( this ).attr(p,
this ._options[p]); } } $( this ).keyup( this .resetHeight).change( this .resetHeight) .focus( this .resetHeight); } this .resetHeight
= function ()
{ var _minHeight
= parseFloat($( this ).attr( "minHeight" )); var _maxHeight
= parseFloat($( this ).attr( "maxHeight" )); if (!window.attachEvent)
{ $( this ).height(0); } var h
= parseFloat( this .scrollHeight); h
= h < _minHeight ? _minHeight : h
> _maxHeight ? _maxHeight : h; $( this ).height(h).scrollTop(h); if (h
>= _maxHeight) { $( this ).css( "overflow-y" ,
"scroll" ); } else { $( this ).css( "overflow-y" ,
"hidden" ); } } this .init(); } }); |