Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   В текстареа нужно подсчитать количество строк (https://javascript.ru/forum/events/41085-v-tekstarea-nuzhno-podschitat-kolichestvo-strok.html)

george115 30.08.2013 20:28

В текстареа нужно подсчитать количество строк
 
В текстареа нужно подсчитать количество строк.
Код
finalcode = code.value; //code получает текстареа
var lines = finalcode.split('\n').length;
работает для подсчетов переходов а не строк

rekzi 31.08.2013 23:51

Есть варианты в сети, но не универсальные (с багами). Мне кажется нужно создавать отдельный div c шириной равной textarea и высотой определяемой содержимым. Вычислять количество строк через высоты строк и блока div, предварительно настроив css (можно наверно и без этого). А блок выводить за пределами видимой страницы. А можно идти по каждой букве в textarea окружая ее каким-то тэгом и определять Y положения этого тэга. Каждый скачок Y и будет определять новую строку.

Яростный Меч 01.09.2013 02:19

Можно использовать getClientRects.

набросок: http://jsfiddle.net/wCyJt/

его, конечно, надо допиливать. в частности, для спана выставить правильный фонт (оный получить от текстареа так )

bes 01.09.2013 11:31

Цитата:

Сообщение от george115
В текстареа нужно подсчитать количество строк.
Код
finalcode = code.value; //code получает текстареа
var lines = finalcode.split('\n').length;
работает для подсчетов переходов а не строк

каких строк?
если есть переход появляется новая строка
или ты хочешь учитывать только строки, в которых есть хотя бы один символ?

BETEPAH 02.09.2013 12:40

Условиями задачи позволяется выставить моноширинный шрифт для текстареа?

george115 02.09.2013 14:13

спасибо. но печатаю много символов, дальше пишет один

george115 02.09.2013 14:14

но мне еще нужно учитовать когда строка появляеться после написания длиной строки, и делаеться переход автоматически

george115 02.09.2013 14:15

не имеет значения какой шрифт)

BETEPAH 02.09.2013 15:15

Цитата:

Сообщение от george115 (Сообщение 270464)
не имеет значения какой шрифт)

Выставьте моноширинный шрифт, посчитайте сколько символов помещается на строке (N) и после .split('\n') элементы полученного массива, которые длиннее N, делите на слова и группируете по строкам.
На пальцах:
Допустим, N = 10
"В этом поле содержится множество букв
кроме
того
цифры тоже есть"

Получаем два длинных абзаца, которые нужно обработать, и два коротких.
В первом, получаем группировку по строкам "В этом ", "поле ", "содержится", "множество ", "букв" - итого 5 строк.
В последнем абзаце получим еще две строки.
Всего получилось 5 + 1 + 1 + 2 = 9 строк.

Яростный Меч 02.09.2013 15:38

Чуть допилил свой вариант, а то Хром неадекватно считал переносы

http://jsfiddle.net/DN6R7/


Часовой пояс GMT +3, время: 10:09.