入力文字量に応じて、高さを自動調整するtextareaを作る【JavaScript・jQuery】

概要

textareaの高さを文章量に応じて自動調整するように作れば、長文テキストを入力した際に内容が把握しやすくなります。

高さの自動調整はJavaScript(jQuery)を使えば簡単に実装することが可能です。

デモ

Resultに表示されているフォームに文字を入力すると、文字量に応じて高さが自動調整されます。

See the Pen Untitled by masahiro nomura (@masahiroview) on CodePen.

JavaScript(jQuery)のコード

function adjustHeight(textarea) {

    // テキストエリアの垂直スクロールバーを隠す
    textarea.css("overflowY", "hidden");

    // テキストエリアの高さを自動に設定してコンテンツ全体の高さを取得する
    textarea.css("height", "auto");

    // テキストエリアの高さをコンテンツ全体の高さに設定する
    textarea.css("height", textarea[0].scrollHeight + "px");
}

$(function () {

  //初回表示時に高さを調整する
  adjustHeight($("#autoHeightTextarea"));

  //入力時に高さを調整する
  $(document).on("input", "#autoHeightTextarea", function (e) {
       adjustHeight($(this));
  });
});

ポイントは一旦textareaの高さをautoに指定してから、scrollHeightを取得することです。
※6~10行目

また、読み込み時にも高さ調整を実行しないと、初期値がある場合に自動調整が実行されないので気をつけましょう。
※15~16行目

コメント

タイトルとURLをコピーしました