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í.