Forum Webscript.Ru
Программирование => JavaScript & JScript => Тема начата: Boxa от 23 Мая 2006, 14:54:18
-
Народ, возник тупик.
Мне надо в textarea вывести текст. Но удалять слова/фразы/символы etc. которые там уже существуют НЕЛЬЗЯ, а дописать новые можно. Как быть, какие есть решения/алгоритмы?
-
Boxa
???
Чем не устраивает textarea.value+=\'text\' ?
-
Вывести --- программно или чтобы пользователь ввел?
-
CGVictor:
Boxa ??? Чем не устраивает textarea.value+=\'text\' ?
не вижу логики, а если человек будет в разных местах текст дописывать?
-
Ещё раз повторяюсь, надо что б в тексарии был какой-то текст, НО удалять содержимое нельзя было, только можно было дописывать что либо, и соответственно удалять только что написанное
-
Boxa, а обязательно тот текст должен находиться в текстареи?
Можно конечно ловить события нажатия кнопок на textarea и сверять начало текста с заданным. Но что-то не так как-то это все...
-
не обязательно, но я незнаю больше форм для редактирования текста с построчным переносом
-
Boxa, а обрисовать задачу поконкретнее? Думаю по другому можно сделать.
-
Вообщем задача такая. Скажем человек пишет какой-то текст. Ему надо, что б редакторы не могли его удалить (какой он был изначально), а лишь смогли дописывать свои "комментарии", другими словами дополнять этот текст
-
А можно вывести этот текст просто, собственно, текстом на страницу? А под ним уже отобразить пустую textarea, где можно писать свои комментарии.
-
тогда не будет понятно, куда он коммент вставляет. в том то и дело, что надо сделать именно так, как я описал
-
Boxa, если правильно оформить все будет понятно.
А обойти форму и напрямую серверу отправить всякую гадость злономеренный дядя все равно сможет.
-
это не будет пабликом, это для личного пользования
-
Давайте всё-таки по теме, какие есть предложения? Задача действительно сложная. Я думал об отключении кнопок BackSpace & Delete, если они собираются удалять текст изначальный, только не понятно, как мне отделить изначальный текст от введенного
-
Если очень хочется извратиться, то можно ловить все нажатия кнопок на textarea и в обработчике проверять, чтобы текст в поле содержал в начале заданный текст. Если не содержит, то значит вставлять его.
Если при этом нужно учитывать copy/paste, то задача усложняется.
-
Если извращаться с textarea, то довольно много всего надо предусмотреть: нажатие backspace/delete, выделение, хоткеи типа "вырезать" и тд. Опять же, позицию курсора отлавливать надо (это скорее всего не проблема).
Я бы на твоем месте сделал свой аналог textarea --- либо на html + js, либо applet какой. И работы меньше (надо реализовать пару фич, а не запретить кучу всего) и возможностей больше --- как минимум можно подсвечивать то, что менять запрещено.
-
Если на то пошло, то вот простейшая защита:
-
vasa_c
Возможно и так.
Однако, я бы решал так (если все же вдруг действительно понадобилось):
- дал бы редактировать всё
- при получении формы на сервере делал diff и смотрел, чтобы не было удаления элементов.
Другие способы, имхо - изобретение себе геморроя.
-
изобретение себе геморроя
Ну я примерно о том же
-
CGVictor:
- при получении формы на сервере делал diff и смотрел, чтобы не было удаления элементов.
Это хотел сделать, только получится не очень красиво. Скажем мне надо будет редактированные места (новые введения) красить другим цветом... блин.. даже незнаю как тебе объяснить. короче пока софт не имеет интеллекта, поэтому не может точно определить различие, и где именно новое, а где старое.
vasa_c
Большое спасибо, дал толчок :) Буду модифицировать. Вопросы попутно задавать, т.к. в JS я не силен
-
Boxa, js конечно хорошо, но проверка на сервере никогда лишней не будет.
-
vasa_c
Делается это для себя, поэтому ничего подставляться не будет, ибо самому себе гавна не делаем =) А проверочку не большую тоже сделаю, но не киллометры кода
-
vasa_c
Вопрос по коду, если я ставлю курсор между словами - он не дает писать, а переносит курсор в конец текста. Почему?
-
0b0rm0t:
Если извращаться с textarea, то довольно много всего надо предусмотреть: нажатие backspace/delete, выделение, хоткеи типа "вырезать" и тд. Опять же, позицию курсора отлавливать надо (это скорее всего не проблема).
Я бы на твоем месте сделал свой аналог textarea --- либо на html + js, либо applet какой. И работы меньше (надо реализовать пару фич, а не запретить кучу всего) и возможностей больше --- как минимум можно подсвечивать то, что менять запрещено.
а где вообще есть доки по созданию таких вещей?
-
Boxa
Google+MSDN.
Boxa:
не может точно определить различие
Гм. Diff - это и есть различие текстов, до определенного предела.
Можно, при желании, разбить текст на слова и смотреть отличия уже по ним.