これはなかなかいいですね。

textareaのサイズを入力にあわせて調整するJavaScript (イラストdeブログ開発記)
イラストdeブログの掲示板の使い勝手を高めるため、textareaサイズをJavaScriptで改行入力毎に大きくするコードを書いてみました

Firefox 2, Safari 3, Opera 9で動作確認してあります。

function resize_textarea(ev){
    //if (ev.keyCode != 13) return;
    var textarea = ev.target || ev.srcElement;
    var value = textarea.value;
    var lines = 1;
    for (var i = 0, l = value.length; i < l; i++){
        if (value.charAt(i) == '\n') lines++;
     }
     textarea.setAttribute("rows", lines);
     // window.status = lines;
}

以下、変更点を。

  • try{}catch(e){}は、上のように書けば不要です。
  • 改行キー(keyCode == 13)を押した時だけではなく、常に\nの数を数えています。これでも十分な速度が出ますし、行数が減る場合にも対応しています。改行時にのみ作用させたい場合、最初のコメントをアンコメントしてください。
  • 最後のコメントアウトされた行はデバッグ用です。

Enjoy!

Dan the JavaScripter