Ahí no es como una caja de texto normal, al haber saltos de línea, y no tener que completar los caracteres la línea completa no se me ha ocurrido una manera de calcular si se necesita scroll o no en el textarea.
Si a alguien se le ocurre, posting please.
De momento dejo este aporte, sólo calcula el ancho, el cols, pero no se me ocurre cómo hacer la altura:
Código:
<textarea cols="10" rows="5" onkeypress="ajusta(this)"></textarea>
<script>
var primeraVez=false;
var colsOriginal, rowsOriginal;
function ajusta(box) {
var cols=parseInt( box.getAttribute("cols") );
var rows=parseInt( box.getAttribute("rows") );
if(primeraVez==false) {
colsOriginal=cols;
rowsOriginal=rows;
primeraVez=true;
}
//la palabra más larga (si es más larga que cols) definirá el nuevo cols
var palabras=box.value.split(/\s/);
for(var i=0, max=0; i<palabras.length; i++)
if(palabras[i].length>max)
max=palabras[i].length;
if(max>colsOriginal)
box.setAttribute("cols",max);
}
</script>
Vamos a intentar la altura...