Автоматичне розтягування поля (textarea) коментаря
Це рішення я забракував. Інше, найкраще рішення тут: Автоматичне розтягування поля (textarea) коментаря (версія 2)
Створив дід поле textarea і задав йому певну висоту, а так само id=’comment’ , а потім і каже, – “напишу я перший коментар, так і зробив”. Коментар зростав і поширювався, великий і красивий і врешті-решт став більшим ніж текстобласті. Вирішив дід витягнути текста: тягне-потягне, витягти не може. Покликав дід бабусю: тягнуть-потягнуть, витягнути не можуть. Покликали вони внучку, а потім і жучку – false! Вже зневірившись, покликав дід програміста, який написав простенький javascript і не просто витягнув textarea, а ще зробив так, щоб поле саме витягувалося при кожному великому та красивому коментарі.
Така ось ідіотська метафора чомусь спала мені на думку, коли я почав писати цей пост. А тепер, поясню нормально
Всі ви, напевно, бачили форми коментаря, які можна розтягувати (тягнуться вниз). Мені така практика здається дуже зручною, якщо пишеш великий коментар і він не міститься у форму, то з’являється скролінг, особливо незручно, мені це здалося, коли в коментар вставляєш якісь коди. Так, відповідаючи на один із коментарів на цьому блозі я задався метою зробити поле куди пишеться коментар, що розтягується у висоту, при цьому щоб воно тягнулося автоматично, якщо текст не поміщається в поле.
Рішенням став такий javascript, автором якого є web-технолог :
function flexibleTextarea(){ var _txt = document.getElementById('comment'); // тут comment - це ідентифікатор поля, яке розтягуватиметься. var _minRows = 7; // Мінімальна кількість рядків (висота поля) if (_txt) { // функція розрахунку рядків function setRows() { _txt.rows = _minRows; // мінімальна кількість рядків // цикл перевірки місткості контенту do { if (_txt.clientHeight! = _txt.scrollHeight) _txt.rows += 1; } while (_txt.clientHeight < _txt.scrollHeight); } setRows(); _txt.rows = _minRows; // перерахунок рядків залежно від набраного контенту _txt.onkeyup = function(){ setRows(); } } } if (window.addEventListener) window.addEventListener("load", flexibleTextarea, false); else if (window.attachEvent) window.attachEvent("onload", flexibleTextarea);
Встановлення скрипту
Щоб підключити скрипт, потрібно скопіювати його в якийсь js файл вашого сайту або створити окремий, наприклад, myjs.js файл (скопіювати туди код) і підключити його в шаблоні так (підключається в head частину):
<script type='text/javascript' src='http://example.com/<шлях до створеного файлу>/myjs.js'></script>
Але краще все ж таки впровадити код в який-небудь вже наявний js файл – економія одного запиту до сервера ніколи не буде зайвою.
Налаштування скрипту
Можливо, потрібно буде налаштувати параметр _minRows – це висота поля, куди вводиться коментар.
Також якщо раптом ідентифікатор поля коментаря у вас відрізняється від comment (це стандартний id у WordPress), то змініть його в цьому рядку:
var _txt = document.getElementById('comment')
Приклад роботи цього скрипту можете спостерігати на цьому блозі у формі коментування.