この値を取得するツールは組み込まれていないようです。しかし、私たちはそれを計算することができます。textarea の line-height が既知の値であると仮定します (css で明示的に定義できます)。したがって、行数を計算するコードは次のようになります。
var area = $('#myarea').get(0);
//save the initial height of textarea
var initialHeight = area.style.height;
//set the height to 0 so scrollHeight will always return dynamic height
area.style.height = '0px';
//here we assume that the line-height equals to 15
var numberOfRows = Math.floor(area.scrollHeight / 15);
//restore textarea height
area.style.height = initialHeight;
console.log(numberOfRows);
作業例http://jsfiddle.net/J5UpF/
アップデート
私のコードでChromeのバグを見つけました。テキストエリアの右側に表示されるスクロールバーを考慮していませんでした。これにより、間違った行数が計算されることがあります。ただし、Firefoxでは魅力的に機能します。この問題を解決するには、スクロールバーの幅の差を計算し、それに応じてテキストエリアの幅を調整する必要があります:
var area = $('#myarea').get(0);
var $area = $('#myarea');
//save the initial height of textarea
var initialHeight = area.style.height;
var scrollbarWidthInitial = area.offsetWidth - area.clientWidth;
//set the height to 0 so scrollHeight will always return dynamic height
area.style.height = '0px';
var scrollbarWidth = area.offsetWidth - area.clientWidth;
var scrollbarWidthDiff = scrollbarWidth - scrollbarWidthInitial;
$area.width($area.width() + scrollbarWidthDiff);
//here we assume that the line-height equals to 15
var numberOfRows = Math.floor(area.scrollHeight / 15);
//restore textarea height
area.style.height = initialHeight;
$area.width($area.width() - scrollbarWidthDiff);
console.log(numberOfRows);
更新された例http://jsfiddle.net/J5UpF/3/
更新 2
Chrome に新たな恐ろしいバグが発見されました! 属性を使用placeholder
すると、Chrome はプレースホルダー テキストの行数を計算します。回避策は簡単です。テキストエリアにデータを入力したときにプレースホルダー属性をバックアップし、データがクリアされたときに復元するだけです。
更新された例http://jsfiddle.net/J5UpF/4/