0

以下は、jQuery で記述された単純な textarea スクリプトで、ユーザーが入力するコンテンツに合わせて各テキストエリアを拡張します。

$(document).ready(function() {
    $('textarea').keyup(function() {
       var addin = 0;
       var txtheight = $(this).scrollTop();
       if(txtheight > 0){ addin = 4; }
       $(this).height(($(this).height() + txtheight + addin));
    });
    $('textarea').keyup();
});

問題は、テキストエリアの初期コンテンツが 1 行を超える場合、スクロール位置を計算できないため、ロード時にテキストエリアがコンテンツに合わせて拡張されないことです。

これを回避する方法についてのアイデア。

4

3 に答える 3

1

このプラグインを試してみませんか?

http://www.jacklmoore.com/autosize

于 2012-09-05T17:57:29.390 に答える
0

以下を試すことができます

$(document).ready(function() {
    $('textarea').each(function() {
       var addin = 0;
       var txtheight = $(this).prop("scrollHeight") -  $(this).height();
       if(txtheight > 0){ addin = 4; }
       $(this).height(($(this).height() + txtheight + addin));
    });
    $('textarea').keyup(function() {
       var addin = 0;
       var txtheight = $(this).scrollTop();
       if(txtheight > 0){ addin = 4; }
       $(this).height(($(this).height() + txtheight + addin));
    });
    $('textarea').keyup();
});​

ただし、スクロールの高さは、見た目が IE8 未満のものではサポートされていません。

于 2012-09-05T18:00:31.950 に答える
0
$('textarea').each(function() {
        $(this).height($(this).prop('scrollHeight'));
    });
    $('textarea').keyup(function() {
       var addin = 0;
       var txtheight = $(this).scrollTop();
       if(txtheight > 0){ addin = 4; }
       $(this).height(($(this).height() + txtheight + addin));
    });

'scrollHeight'Danny から概説されたの正しい使用。

于 2012-09-05T18:26:55.227 に答える