var el = document.querySelector("textarea.your-text-area") el.addEventListener("input", function(ev) { if (parseInt(el.rows, 10) < 8) { const currentRow = el.value.split("\n").length; el.rows = currentRow + 1; } }); 3行目で8行以上多くならないようにしてある。Githubのフォームがこんな仕様だったので真似した。無限に伸ばしたかったら外せば良い。 jQueryは必要ないです。 追記 よく考えたら折り返し考慮してなかったので、もっかい考える。 追記 こうなった function fitToContent(el, maxHeight) { let adjustedHeight =