2008年5月21日(水)

« Yin and Yang:動作改善(?)他 | トップページ | 『無断リンクはやめて』という人にはしない方向で »

ちょっと小細工:textareaの高さを自動調節

改行入力なしでオートラップされた場合も自動調節してくれるとうれしいかな?と思ってちょっと小細工してみました。
■元ネタ
元記事:textareaのサイズを入力にあわせて調整するJavaScript (イラストdeブログ開発記)
経由:404 Blog Not Found:javascript - 勝手に添削 - textareaの高さを自動調節
■ソース
<script type="text/javascript">
function    initResizeTextarea(textarea) {
    if (!textarea||textarea._initResizeTextarea_) return;
    textarea._initResizeTextarea_=true;
    var offset=textarea.scrollHeight-textarea.offsetHeight;
    var lastLength=textarea.value.length, initRows=textarea.getAttribute('rows');
    if (isNaN(initRows)) initRows=3;
    if (!window.opera) {
        textarea.onkeyup=function(){
            var rows=textarea.getAttribute('rows');
            if (textarea.value.length<lastLength) {
                while (textarea.scrollHeight-textarea.offsetHeight<=offset) {
                    textarea.setAttribute('rows',--rows);
                    if (rows<=initRows) break;
                }
            }
            while (offset<textarea.scrollHeight-textarea.offsetHeight) {
                textarea.setAttribute('rows',++rows);
            }
            lastLength=textarea.value.length;
        };
    }
    else {
        textarea.onkeyup=function(){
            var lines=textarea.value.split('\n');
            var len=(initRows<lines.length)?lines.length:initRows;
            textarea.setAttribute('rows',len);
        };
    }
}   //  end of initResizeTextarea()
</script>

<textarea cols="64" rows="4" onfocus="initResizeTextarea(this)">
イチ


</textarea>
■サンプル
動作確認は、IE7(Sleipnir)、Firefox 2.0.0.14、Safari 3.1.1、Opera 9.27 で行いました。
ただし、Opera はscrollHeightの値が変化してくれないため、手動で入力した改行のみ対応で、オートラップには対応できていません。
どうも、Operaのtextareaは鬼門らしい(「内容に合わせて伸縮するテキストエリア」を Opera にも - m2より)

この記事をニフティクリップβに追加 この記事をはてなブックマークに追加 2008/05/21(水) 01:53 | | 記事の編集(管理者用)

風柳へひとこと(web拍手) 

おもいつき」カテゴリの記事

パソコン・インターネット」カテゴリの記事

覚書」カテゴリの記事

トラックバック

この記事のトラックバックURL:

記事との関連性が薄いものやSPAM等、管理人が不適切と見なしたトラックバックについては予告無く削除する場合が有ります。悪しからずご了承下さい。

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/161784/41272788

この記事へのトラックバック一覧です: ちょっと小細工:textareaの高さを自動調節:

コメント

コメントを書く