LINUX.ORG.RU

TextArea - resize auto


0

1

Доброе время суток. Суть проблемы заключается в слудующем - есть некое TextArea, в который загружается текст. Поле в данном случае readonly. Необходимо автоматически подстраивать размер(конкретно высоту) поля под размер содержащегося текста. CSS-свойство height:auto не срабатывает. Как можно реализовать требуемый функционал? Внешние библиотеки типа jQuery использовать нельзя(уже нагуглил плагин), реализовано все на основе SmartGWT, влоб считать высоту как число символов разделенное на ширину поля в символах так же нельзя - шрифт не моноширный. Ширина TextArea в разных местах - разная. Есть решение для ситуации где каждая строка заканчивается переносом. Необходимо придумать решение для ситуации где текст идет сплошной строкой без переносов. Есть какие либо идеи? Сойдет решение на plain JavaScript, лишь бы без библиотек обошлось.

★★★

Последнее исправление: TheKnight (всего исправлений: 1)

создаем див с текстом и стилями как у поля, смотрим высоту, разрушаем див, выставляем высоту поля?

первое что в голову пришло

алсо, если есть плагин, просто посмотри код и реализуй без jquery!

trashymichael ★★★
()
Ответ на: комментарий от trashymichael

Любопытный вариант) Надо будет завтра попробовать.

TheKnight ★★★
() автор топика
Ответ на: комментарий от trashymichael

trashymichael

создаем див с текстом и стилями как у поля, смотрим высоту, разрушаем див, выставляем высоту поля?

Фу какой былокод...

moscwich
()
Ответ на: комментарий от moscwich

Можешь предложить более хорошее решение? Плагин jQuery использовать нельзя, как и другие библиотеки.

TheKnight ★★★
() автор топика
Ответ на: комментарий от moscwich

Могу даже еще больше уточнить - запихать скрипт ресайза в window.onload тоже нельзя. Страничку надо считать AJAX'овой, генерируемой AJAX-запросами. А задача заключается в установке высоты блока на этапе формирования страницы. Надо ее каким то образом рассчитать или получить - и тогда ее выставить. Но. Если есть возможность вызвать какой либо JavaScript после загрузки требуемого элемента AJAX'ом - то задачу можно считать решеной. Скрипт я написать могу. Правда из минусов - нельзя использовать id элемента напрямую. Но отловить все textarea JavaScript'ом я уже могу.

TheKnight ★★★
() автор топика
Ответ на: комментарий от moscwich

учитывая то что добавил-узнал высоту-убрал на экране отображено не будет, это самый быстрый, простой и безотказный способ, ну как в той бритве

trashymichael ★★★
()
Ответ на: комментарий от trashymichael

К сожалению, этот способ тоже не сработает на требуемом этапе... Как выяснилось, у меня все весело и страшно и надо замучиваться с AJAX'ом, что бы вызвать JavaScript вовремя. А на уже отрендеренной страничке можно получить свойство scrollHeight и выставить height = scrollHeight + «px». И все...

TheKnight ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.