Я хочу предоставить изменение размера текстового элемента управления для пользователей. Я дал это и посмотрел на ряд других реализаций, но я не могу найти тот, который отвечает всем моим требованиям. В частности, я хочу контролировать, что:Поиск 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, насколько хорошо он работал бы в форме, содержащей сотни стандартных элементов ввода?
То, что я изложил выше, представляет собой «окончательное изменение размера текстовой области» - решение того, что я воспринимаю как проблемы с существующими подходами. Существует ли такой контроль? Можно ли написать такой контроль?
«Насколько хорошо он работал бы в форме, содержащей сотни стандартных элементов ввода?» Будут ли использоваться многие эти uber textareas на одной странице? – Tom
Потенциально, да. Вещь с Facebook (или даже Google Docs) заключается в том, что им действительно нужно иметь дело с единственным элементом contentEditable на странице, что, очевидно, намного проще, чем с 20+. –