Здравствуйте! Подскажите как посчитать количество строк в textarea? Шрифт будет один, это не принципиально для меня. Нужно чтоб учитывались перенос строки по нажатию enter и чтоб пустые строки не считались. Нашел вот такой код: [js] function textareaCurLineNum(obj) { var rowHeight = obj.clientHeight/obj.rows; var curHeight = obj.createTextRange().boundingHeight; return parseInt(curHeight/rowHeight)+(obj.value!=''?1:0); } [/js] автор говорит что если текстовое поле пусто, то функция вернет 0 (хотя курсор и мигает в первой строке), ибо строк реально нет; если вы нажали “Enter” и курсор переместился в новую строку, то это не значит что, появилась новая строка. Вот когда вы введете в этой строке что-то, то строка действительно появится, и будет учитываться при подсчете. Я не пойму как прикрутить этот код к событию onclick в форме, чтоб при нажатии кнопки сабмит мне было доступно количество строк textarea и я смог бы потом использовать это количество строк далее в php в цикле for. И еще такой вопрос: если приведенные код рабочий, то скажите, он кроссбраузерный?
и что получится? А если пользователь не нажмет enter и строка заполнится вся? как вы написали напиши хоть сколько строк, они все засчитаются за одну, пока не попадется символ новой строки. это все же не то что я хотел. А в цикле мне нужно знать сколько строк заполнил пользователь чтоб потом совершать обработку этого количества строк.
А как ты хочешь посчитать число строк, если пользователь вводил все в одну строку? Тебе одна строка и прийдет. Код (Text): $textValue = $_POST['textareaname'] Более того, даже если пользователь будет жать ENTER тебе все равно придет все одной строкой Но с символом перевода каретки внутри. Можешь установить ширину textarea (Хотя в том же Chrome, она меняется мышкой!) И резать регуляркой preg_split().
Simpliest Судя по разделу человеку нужна реализация на JS ;-) алгоритм такой: 1. получаешь в переменную содержимое поля 2. считаешь в ней количество переносов строки 3. количество строк = количество переносов строки +1
Я вот смутно представляю как он будет считать строки, если я не буду жать ENTER а сплошным куском запишу 4кб текста в поле. На экране то это все будет в несколько строк Но физически...
Посчитать то можно, я же могу посчитать кол-во символов в строке. Правда вот с определелнием переносов строки сложнее. Я пытался делать как советовали PHP: <?php count(explode($textareaValue, '\n')); ?> Только символы переноса у меня не распознаются как буд то их вообще нет. У меня стоит wrap='soft' пробовал и hard и virtual. никакого толка. тоже не пойму почему
Вообще конечно на php но если честно я ни нашел ни одного примера как посчитать количество строк на php и поэтому спрашиваю как сделать средствами javascript
Алгоритм прост 1. Сначала бьем строку по символам переноса строки '\n'. 2. Бежим по получившемуся массиву и все строки больше N символов режем на несколько строк. P.S. наверняка это проще всего сделать регуляркой, но мне лень искать как
White Wolf По быстрому на РНР набросал, разбирайся: PHP: <?php // Исходная строка $something = "Hello\r\nmy lovely\r\nWorld\n\r\n\r\n\r\nEmpty"; // Произведение поиска if(preg_match_all('/^(.+?)$/m', $something, $lines)) { printf("В области %u строк. ", sizeof($lines[1])); } else echo "Строк не найдено нифига"; ?>
Проверил я это выражение. оно не работает. А жаль. Пытался написать свое. тоже ничего хорошего не выходит.
Пробовал так: PHP: preg_match_all('/^(.+?[^\n])$/m', $something, $lines) . Так тоже не работает. Считает строки если в них два и больше символа. А один, нет.[/php]