Jak získat počet řádků v textové oblasti?

Chtěl bych spočítat počet řádků v textové oblasti, např.:

line 1
line 2
line 3
line 4

by měl počítat do 4 řádků. V podstatě jedno stisknutí klávesy Enter vás přesune na další řádek

Následující kód nefunguje:

var text = $("#myTextArea").val();   
var lines = text.split("r");
var count = lines.length;
console.log(count);

Vždy dává „1“ bez ohledu na počet řádků.

Odpověď

Implementoval jsem metody lines a lineCount jako prototypy String:

String.prototype.lines = function() { return this.split(/r*n/); }
String.prototype.lineCount = function() { return this.lines().length; }

Metoda rozdělení zjevně nebude počítat návrat vozíku a/nebo znak nového řádku na konci řetězce (nebo vlastnost innerText textarea) v IE9, ale započítá je v Chrome 22, což dává jiné výsledky.

Dosud jsem se tomu přizpůsobil odečtením 1 od počtu řádků, když je prohlížeč jiný než Internet Explorer:

String.prototype.lineCount = function() { return this.lines().length - navigator.userAgent.indexOf("MSIE") != -1); }

Doufejme, že někdo má lepší RegExp nebo jiné řešení.