![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
dmage |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 21.6.2007 Репутация: нет Всего: 1 |
Как в <textarea> возможно отследить изменения?
Суть в следующем: есть <textarea> с достаточно объемным текстом. Примерно раз в n секунд необходимо отправлять на сервер информацию о том, что пользователь изменил в этом тексте. Если ничего не изменилось, то ничего не отправлять. Отправлять весь с такой частотой довольно-таки накладно, поэтому хотелось бы отправлять информацию вида: с позции 25 добавлен текст "foobar", с позиции 60 по 70 текст удален. Изначально была идея сделать слежение по событию onkeypress, однако непонятно как отследить изменения происходящие по Ctrl+Z. К тому же изменения по меню (например, Правка -> Отменить) таким образом вообще не ловятся. Была так же идея по таймеру раз в n секунд делать diff сохранненого текста (от предыдущей итерации) и текущего текста, но т.к. n скорее всего будет <= 1, а алгоритм diff вроде как имеет сложность O(n^2) , то это решение кажется не очень удачным по производительности. Собственно вопрос: есть ли подходящие события у <textarea> или есть какие-нибудь библиотеки, реализующие подобный функционал? |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
imho, наиболее правильный путь. Разве что начинать этот процесс стоит при onfocused и заканчивать при onblur этой текстареи. вряд ли нужно делать полный diff. Достаточно вычислить неизменённый кусок текста сначала и неизменённый кусок текста с конца. А вот середину уже посылать без точного выяснения различий. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
Посмотри сюда, думаю полезно прочесть будет. Если ловить все события для всех браузеров - то тогда можно легко отлавливать изменения.
|
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |