2009-10-19 4 views
16

Я хочу предоставить изменение размера текстового элемента управления для пользователей. Я дал это и посмотрел на ряд других реализаций, но я не могу найти тот, который отвечает всем моим требованиям. В частности, я хочу контролировать, что:Поиск Ultimate Resize Textarea

  • Работает в IE6, IE7, IE8 на Windows, и Firefox 3 и 3.5 на Windows, и OS X, когда страница отображается в стандартном режиме совместимый (т.е. не в режиме совместимости).
  • Не испортить буфер отмены/отменить стек. Это особенно неприятная проблема с добавлением IE узлов, удалением узлов и некоторыми другими операциями DOM сбрасывает входной буфер, что означает, что если реализация использует эти методы, отмена не будет вести себя так, как в стандартном элементе управления textarea. Я не смог найти много информации об этой ошибке, кроме this note. Реализации, такие как jQuery Auto Growing Plugin, страдают этой проблемой - попробуйте отменить изменения в IE и сравните, как это работает со стандартным текстовым полем. Я добавил example page, демонстрируя эту проблему для JSBin.
  • Максимальная высота, за которой контроль не может увеличиться.
  • Устраняется при удалении содержимого.
  • Не мерцает или действует странно при нажатии клавиши. например jQuery Auto Growing Управление Textarea ведет себя странно, по крайней мере, с IE7, когда элемент управления вырос за пределы его начального размера.
  • Не требует, чтобы элемент управления использовал шрифт с фиксированной шириной/моношириной.

Ближайший, который я видел к тому, что работает, как это, является полем обновления статуса Facebook, которое реализовано как редактируемый элемент контента, но у меня есть некоторые оговорки об использовании такого элемента, поскольку использование div означает:

  • Нужно явно начертить границу, что означает, что мы можем получить границу, которая отличается от родной текстовой области.
  • Необходимо синхронизировать контент с реальным текстовым полем (возможно, в обоих направлениях?).
  • Добавляет сложности при размещении подсказок и других элементов относительно положения текстового поля.
  • Хотя этот подход работает для чего-то вроде обновления статуса Facebook, насколько хорошо он работал бы в форме, содержащей сотни стандартных элементов ввода?

То, что я изложил выше, представляет собой «окончательное изменение размера текстовой области» - решение того, что я воспринимаю как проблемы с существующими подходами. Существует ли такой контроль? Можно ли написать такой контроль?

+1

«Насколько хорошо он работал бы в форме, содержащей сотни стандартных элементов ввода?» Будут ли использоваться многие эти uber textareas на одной странице? – Tom

+0

Потенциально, да. Вещь с Facebook (или даже Google Docs) заключается в том, что им действительно нужно иметь дело с единственным элементом contentEditable на странице, что, очевидно, намного проще, чем с 20+. –

ответ

6

Заканчивать DOJO tools text area control

видеть больше на этом demo page (текстовой области В конце формы)

Это вплотную к вашим требованиям.

+0

Странно - демо-страница, похоже, не имеет проблемы со стеком отмены в IE, но копирование примера из начальной ссылки происходит. –

2

Вы хотите авторазмер дисплея? но оставить содержимое тем же?

Это все сценарии могут сделать, настроить дисплей, и позволит вам увидеть больше вашего собственного текста ...

+0

Да, я хочу, чтобы текстовое поле изменялось до контента на основе вышеприведенных критериев. –

+2

Черт, это требует: p –

3

Вы, возможно, потребуется свернуть свой собственный, чтобы соответствовать этим требованиям.

Это может быть начало.

http://tuckey.org/textareasizer/ (хотя попытаться избежать Eval() в твоей)

http://www.felgall.com/jstip45.htm

http://viralpatel.net/blogs/2009/06/textarea-resize-javascript-jquery-plugin-resize-textarea-html.html

Это на самом деле кажется, хороший плагин JQuery. У меня может быть проблема при разработке чего-то подобного. Если я это сделаю, я отправлю его здесь.

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

http://www.aclevercookie.com/demos/autogrow_textarea.html

+0

Решение от ViralPatel подробно описывает, как создать немного другой элемент управления, который меня интересует. –

+0

Решение Stephen Chapman не сокращается, если контент удален. –

+0

Текстовая область У Resizer возникают проблемы при сжатии при использовании Firefox. –

0
+0

. Статья SitePoint (одна из трех частей) содержит некоторые полезные замечания о методах, но она уничтожает стек отмены в IE, потому что решение управляет DOM. –

+0

Решение от ViralPatel подробно описывает, как создать несколько отличный контроль от того, который меня интересует. –

+0

У Smart Area, похоже, есть проблемы с сокращением, особенно в Internet Explorer. –

0

Я использую nicEdit. Кажется, у вас есть все, что вам нужно, и скрипт составляет всего 1700 строк с лицензией MIT, поэтому вы можете внести любые изменения, которые вам нужны.

+0

nicEdit полагается на contentEditable технику, которую я пытаюсь избежать, однако, возможно, мои оговорки об этом методе необоснованны. –

2

This A List Apart post содержит реализацию, которая выглядит довольно близко к вашим критериям и содержит хорошее объяснение того, что происходит.

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