| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Не редактируемая область в textarea |
| Автор: Ghirik 5.2.2008, 14:48 |
| Есть задача создать не редактируемую область в textarea. Обьясню... textarea находится в форме, нужно, чтобы изначально, при открытии формы, в textarea создавалась область в которой будет расположен какой-то текст. И этот текст нельзя было изменять пользователю, но чтобы програмно я его мог менять. При том, в процессе ввода текста пользователем, размер и содержимое этой области будет програмно изменяться. Возможно такое сделать? Как? Покажите направление... а то, у меня ни каких мыслей.... |
| Автор: KuZyagroup 19.2.2008, 11:46 | ||
Если правильно протелепатил сообщение то
|
| Автор: bars80080 19.2.2008, 11:57 |
| чисто идея, может всю эту программную область запихнуть в плавающий слой и зафиксировать над углом текстареа, так чтобы сливался, а в самом поле как-то выделить эту область, чтоб поле в это месте было уже |
| Автор: KuZyagroup 19.2.2008, 12:39 | ||
Вот визуализация начального положения. Уже есть общая концепция реализации. 1. Просвятить меня как в textarea enter сделать (тут что-то я затупил 2. Написать перехватчик поподания курсора в текстареа под див |
| Автор: Sardar 19.2.2008, 14:22 |
| Проще вынести не редактируемую часть текста вне textarea, поверх в слое с красивым форматированием. В крайнем случае можно убрать border'ы у textarea, примкнуть слой с текстом, обрисовать border вокруг всей композиции. Конечно при скроллинге будет видно, что фиксированный текст вне textarea. На встречу: где это понадобилось? |
| Автор: Ghirik 19.2.2008, 14:43 |
| Спасибо за предложения, но это несколько не то. Каюсь, хреново изложил задачу. Суть такова. Я плохо ориентируюсь в php (ни как Конечно, эту задачу лучше решать средствами php, но там нужно довольно многое поменять. Во первых, лучше использовать две области ввода, две textarea. И в зависимости от того, в которую человек вводит текст, осуществлять направление перевода. Во вторых, серверный скрипт должен принять данные не из одной textarea, а из двух. И положить эти данные в базу так, чтобы потом можно было изымать их обратно для редактирования какждые в свою textarea. С этим мне не справиться. Если только кто поможет В общем, я пока в замешательстве, и полнейшей нерешимости |
| Автор: Sardar 19.2.2008, 15:03 |
| Перевод не бывает построчным (частое заблуждение), говорю как человек владеющий 3 языками. В твоём случае достаточно div'а, внутри span'ы со строчками. При клике на span можно временно заменять его input:text'ом (в крайнем случае .designMode="on", но тогда структура может быть нарушена.). Задача муторная и приложеных усилий не стоит, будет не удобно. |
| Автор: Ghirik 19.2.2008, 15:09 | ||
Что значит по строчным? Я не имею ввиду строки, я говорю о законченных предложениях. Предложения ведь переводятся по отдельности? |
| Автор: Sardar 19.2.2008, 17:37 |
Под строкой я имел в виду "предложение" (с большой буквы и до точки). Нет, предложения не переводятся по отдельности, если мы говорим о качественном (для людей) переводе. Построчно работает только машинный перевод, читать такое - пытка. |
| Автор: Itsys 20.2.2008, 12:16 |
| Мне кажется надо копать в сторону обработки события onkeydown и проверки текущей позиции курсора и вслучае нажатия кнопки в запрещенной возвращать false.... |
| Автор: ksnk 20.2.2008, 12:20 |
| Ооо! Классное предложение, Ghirik, по мысли Sardar'а, вам следует нанять профессионального переводчика и юзать его в режиме online-24 часа |
| Автор: Ghirik 20.2.2008, 17:42 | ||
Да, действительно, самое реальное решение. onkeydown по любому обрабатывать, ну и делать в самом начале проверочку позиции курсора. Мне где то даже ссылку давали на кроссбраузерный вычислитель позиции. Там даже разные шрифты/размеры можно было применять. Я сейчас загрузил мод WYSIWYG-редактора для SMF, буду прикручивать к своим шаблонам, ещё не видел, похоже он не на textarea... Потом буду определяться, что делать. |
| Автор: Itsys 20.2.2008, 18:08 | ||
Для опеределения позиции курсора можно сделать так:
|
| Автор: Nigel 20.2.2008, 18:40 |
| А можно просто сменить фокус на другой элемент управления... |
| Автор: Ghirik 20.2.2008, 19:24 | ||
Itsys, а в котором месте получим позицию? В textbefore ведь вернется просто строка.
А это как? Ну сменим фокус, ну вернем назад... И что? |
| Автор: Itsys 20.2.2008, 22:10 |
| Ну как как textbefore.length - длина строки от начала |