Решение jQuery состоит в том, чтобы установить высоту текстовой области в 'auto', проверить scrollHeight и затем адаптировать высоту текстовой области к этому каждый раз, когда текстовая область изменяется ( JSFiddle ):
$('textarea').on( 'input', function(){
$(this).height( 'auto' ).height( this.scrollHeight );
});
Если вы динамически добавляете текстовые области (через AJAX или что-то еще), вы можете добавить это в свой $ (документ) .ready, чтобы убедиться, что все текстовые области с классом 'autoheight' находятся на той же высоте, что и их содержимое:
$(document).on( 'input', 'textarea.autoheight', function() {
$(this).height( 'auto' ).height( this.scrollHeight );
});
Протестировано и работает в Chrome, Firefox, Opera и IE. Также поддерживает вырезать и вставить, длинные слова и т. Д.