Показать сообщение отдельно
  #3 (permalink)  
Старый 20.10.2013, 16:01
Интересующийся
Отправить личное сообщение для Авас Посмотреть профиль Найти все сообщения от Авас
 
Регистрация: 05.10.2013
Сообщений: 19

Фраза "Теперь вам надо их перебрать и повесить обработку на каждый" меня испугала и заставила задуматься: а надо ли мне это вообще ))
Но, благо, нашёлся в интернете добрый человек, который выложил скрипт авторастяжки поля комментирования:
<script type="text/javascript">
// функция подсчета количества строк
function countLines(strtocount, cols) {
	var hard_lines = 1;
	var last = 0;
	while ( true ) {
		last = strtocount.indexOf("\n", last+1);
		hard_lines ++;
		/* if ( hard_lines == 35) break; */
		if ( last == -1 ) break;
		}
	var soft_lines = Math.ceil(strtocount.length / (cols-1));
	var hard = eval("hard_lines " + unescape("%3e") + "soft_lines;");
	if ( hard ) soft_lines = hard_lines;
	return soft_lines;
}

// функция вызывается при каждом нажатии клавиши в области ввода текста
function ResizeTextArea(the_form,min_rows) {
	the_form.rows = Math.max(min_rows,countLines(the_form.value,the_form.cols) +1);
}
</Script>


<h1>Скрипт для авторастяжки поля комментирования</h1>

<p>Это универсальный скрипт растягивания, не зависящий от имен полей.</p>
<p>Вводите сюда текст, дополнительные строки будут добавляться автоматически:</p>
<form>
  <textarea rows="2" cols="50" OnKeyUp="ResizeTextArea(this,2);">
  </textarea>
</form>


Лишь чуток его апгрейдил и получилось то, что надо:
<script type="text/javascript">
// функция подсчета количества строк
function countLines(strtocount, cols) {
	var hard_lines = 0;
	var last = 0;
	while ( true ) {
		last = strtocount.indexOf("\n", last+1);
		hard_lines ++;
		/* if ( hard_lines == 35) break; */
		if ( last == -1 ) break;
		}
	var soft_lines = Math.ceil(strtocount.length / cols);
	var hard = eval("hard_lines " + unescape("%3e") + "soft_lines;");
	if ( hard ) soft_lines = hard_lines;
	return soft_lines;
}

// функция вызывается при каждом нажатии клавиши в области ввода текста
function ResizeTextArea(the_form,min_rows) {
	the_form.rows = Math.max(min_rows,countLines(the_form.value,the_form.cols));
}
</Script>

<form>
  <textarea rows="1" cols="30" style="overflow:hidden;min-height:40px;resize:vertical;" OnKeyUp="ResizeTextArea(this,2);"></textarea><br>
  <textarea rows="1" cols="30" style="overflow:hidden;min-height:40px;resize:vertical;" OnKeyUp="ResizeTextArea(this,2);"></textarea>
  </textarea>
</form>

Последний раз редактировалось Авас, 20.10.2013 в 17:23.
Ответить с цитированием