Я хочу предоставить изменение размера текстового элемента управления для пользователей. Я дал это и посмотрел на ряд других реализаций, но я не могу найти тот, который отвечает всем моим требованиям. В частности, я хочу, чтобы элемент управления:
- Работает в IE6, IE7, IE8 на Windows и Firefox 3 и 3.5 в Windows и OS X, когда страница отображается в стандартном режиме (т.е. не в режиме quirks).
- Не испортит буфер отмены/отмены. Это особенно неприятная проблема с добавлением IE узлов, удалением узлов и некоторыми другими операциями DOM будет reset входным буфером, означающим, что если реализация опирается на эти методы, отмена не будет вести себя так, как в стандартном элементе управления textarea. Мне не удалось найти много информации об этой ошибке, кроме этой заметки. Реализации, такие как jQuery Auto Growing Plugin, страдают от этой проблемы - попробуйте отменить изменения в IE и сравнить, как это работает со стандартным текстовым полем. Я добавил страницу примера демонстрирующую эту проблему для JSBin.
- Максимальная высота, за которой элемент управления не может расти.
- Устраняется при удалении содержимого.
- Не мерцает или действует странно при нажатии клавиши. например jQuery Auto Growing Управление Textarea ведет себя странно с, по крайней мере, IE7, когда элемент управления вырос за пределы исходного размера.
- Не требует, чтобы элемент управления использовал шрифт с фиксированной шириной/моношириной.
Ближайшее, что я видел к тому, что работает, как это, - это поле обновления статуса Facebook, которое реализовано как элемент редактирования editable, но у меня есть некоторые оговорки об использовании такого элемента, потому что использование div означает:
- Необходимо явно создать границу, что означает, что мы можем получить границу, которая выглядит иначе, чем родная текстовая область.
- Вам нужно синхронизировать контент с реальной текстовой областью (возможно, в обоих направлениях?).
- Добавляет сложность при размещении подсказок и других элементов относительно положения текстового поля.
- Хотя этот подход работает для чего-то вроде обновления статуса Facebook, насколько он будет работать в форме, содержащей сотни стандартных элементов ввода?
То, что я изложил выше, представляет собой "окончательное изменение размера текстовой области" - решение того, что я воспринимаю как проблемы с существующими подходами. Существует ли такой контроль? Можно ли написать такой элемент управления?