// Вы не упоминаете jquery, вы можете использовать что-то вроде этого:
var who= document.getElementsByName('abc')[0];
who.onkeypress= who.onchange= function(e){
e= e? e.target: window.event? event.srcElement: '';
var val= e.value? e.value.length: 20;
// set a minimum length, in input 'size' attribute
if(val> 18) e.size= val+2;
return true;
}
Ввод является линейным, если вы хотите, чтобы разрывы строк использовали текстовую область, и расширяйте ее по вертикали, когда scrollHeright больше, чем offsetHeight.