2012-02-07 6 views
0

Мне нужно создать пользовательский элемент управления с Texbox Textmode = "Multiline" или html textarea.Изменение размера текстового поля/текстового поля в соответствии с текстом

В режиме редактирования Текстовое поле/текстовое поле должно быть изменемо. Для этого я могу использовать некоторый плагин jquery. Но в режиме только для чтения это текстовое поле/текстовое поле отключено и оно должно автоматически изменяться (высота), чтобы соответствовать тексту. Даже если текст занимает страницы. Я мог бы просто скрыть Textbox/textarea в режиме только для чтения и отобразить текст в div, но я бы хотел, чтобы страница редактирования и readonly выглядела одинаково.

Любые идеи?

+0

Не знаю, поможет ли это вам или нет, но [css-tricks] (http://css-tricks.com/textarea-tricks/) что-то есть. См. Номер 7. –

ответ

1

Почему есть текстовое поле/вход в режиме readonly - в отличие от js для переключения между этим элементом управления и DIV или тегом P (для отображения текста), где просто не устанавливая высоту (или устанавливая ее на height:auto), что поле автоматически будет содержать весь текст?

Кроме того, если ваше окружение не позволяет этого, разрешите изменение размера текстового поля пользователю; см. http://davidwalsh.name/textarea-resize

+0

Мне не нравится, потому что это делает страницу другой в режимах edit/readonly. Другие экраны выглядят одинаково в этих двух режимах, поэтому я предпочел бы придерживаться этого с новым экраном. Но если бы я это сделал, я бы отображал/скрывал элементы управления на стороне сервера. Выполнение этого в JS иногда заставляет элементы управления появляться, а затем исчезает через некоторое время. –

+0

Вы можете опустить DIV и сделать его похожим на ваше текстовое поле (или наоборот). Я не могу согласиться с тем, что POST на сервере является лучшим решением по сравнению с POSSIBLE JS/DHTML-мерцанием (в этом случае я сомневаюсь, что он будет какой-либо), поскольку POST еще больше задержит процесс show/hide (плюс у вас есть ненужное отключение сервера и сервер, перестраивающий страницу, а затем приложение, попавшее в базу данных и хранилище сеансов, и что-нет, все не нужны). –

+0

Кроме того, единственным правильным способом достижения желаемого было бы создание невидимого DIV, установка его ширины, поля, заполнения, границы, семейства шрифтов, размера шрифта (я пропустил что-либо), чтобы быть таким же, как в textarea , добавьте в него текст, и THEN измерьте его высоту, а THEN установите эту высоту в текстовое поле, а затем, наконец, удалите временную DIV. Такой же подход используется, например, для обрезания (эллипсиса) текста. Итак, у вас есть DIV. Итак, я думаю, я просто отдал другой способ сделать то, что вам нужно :) –

Смежные вопросы