X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Редактор
unnormal
unnormal
Topic Starter сообщение 14.6.2010, 10:20; Ответить: unnormal
Сообщение #1


С яваскриптом знаком плохо, поэтому помогите реализовать простую функцию:

Имеется <textarea id="editor"></textarea> и кнопки жирного, курсива, подчёркнутого текста.
Не могу реализовать функцию, чтобы она вставляла теги по краям выделенного текста.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 14.6.2010, 10:36; Ответить: Arks
Сообщение #2


вообще замена тега для элемента с заданным id делается с помощью:
document.getElementById('id').outerHTML = '<внешний тег>'+document.getElementById('id').outerHTML+'</внешний тег>';

Или например по DOM - можно создать новый тег, назначить ему родителя(бывшего родителя старого тега) и потомка - старый тег.

А в остальном не очень понял что Вы хотите делать. При выделении текста мышкой делать выделенную часть жирной или что?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
unnormal
unnormal
Topic Starter сообщение 14.6.2010, 10:50; Ответить: unnormal
Сообщение #3


(Arks @ 14.6.2010, 13:36) *
А в остальном не очень понял что Вы хотите делать. При выделении текста мышкой делать выделенную часть жирной или что?

Выделяешь часть текста, нажимаешь кнопку, и он помещается в BB-теги.
Не DesignMode, просто в текстарее.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 14.6.2010, 11:24; Ответить: Arks
Сообщение #4


Копипаст с http://www.tigir.com/javascript.htm

Как заменить выделенный текст в TEXTAREA на другой?

Как это ни "странно" :-), но реализация ветвится из-за разных методов работы с выделениями в IE и Mozilla/Gecko:
IE4+
В Internet Explorer используем объект selection, который представляет текущее выделение и его метод createRange, создающий объект TextRange из текущего выделения. Полученный TextRange объект имеет свойство text (для чтения и записи), которое и дает нам выделенный текст. Т.е. прочитали TextRange.text, сделали изменения и записали назад.

См. реальное использование в примере ниже.
Mozilla/Gecko
Ну, а здесь ситуация выглядит несколько по-другому: для достижения цели используем свойства selectionStart и selectionEnd самого объекта textarea, которые содержат начальную и конечную позицию выделения соответственно. А имея текст и зная в нем начало и конец для замены, мы можем легко заменить выделенный фрагмент на другой используя, например метод "substr()".
Пример:
function replaceSelectedText(obj,cbFunc)
{
obj.focus();

if (document.selection)
{
var s = document.selection.createRange();
if (s.text)
{
eval("s.text="+cbFunc+"(s.text);");
s.select();
return true;
}
}
else if (typeof(obj.selectionStart)=="number")
{
if (obj.selectionStart!=obj.selectionEnd)
{
var start = obj.selectionStart;
var end = obj.selectionEnd;

eval("var rs = "+cbFunc+"(obj.value.substr(start,end-start));");
obj.value = obj.value.substr(0,start)+rs+obj.value.substr(end);
obj.setSelectionRange(end,end);
}
return true;
}

return false;
}
В качестве аргумента ф-ии передается объект textarea и имя вспомогательной функции, которая принимает в качестве аргумента выделенный текст и возвращает новый текст, который заменит выделенный текст. После замены текста курсор устанавливается в конец выделения.


Пример использования:
//Определяем вспомогательную ф-ю которая
//принимает строку и возвращает её в нижнем регистре
function lCase(s){return s.toLowerCase();}

//заменяем выделенную строку в нижний регистр
replaceSelectedText(document.formName.textareaName,'lCase');

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) ПОДБИРАЮ ПОСТЫ ДЛЯ ГРУПП ВК (РЕДАКТОР ВК) И ДРУГИЕ УСЛУГИ
0 robot_yaga2 776 30.5.2023, 15:52
автор: robot_yaga2
Открытая тема (нет новых ответов) Требуется редактор на контентные сайты
250руб/час
0 Lisel85 883 1.10.2020, 16:17
автор: Lisel85
Открытая тема (нет новых ответов) Необходим пишущий редактор для постоянного сотрудничества.
5 duoseo 2898 6.7.2020, 19:33
автор: Vreg
Открытая тема (нет новых ответов) Редактор удаленно, постоянная работа
0 Cheshire_Cat 1736 28.11.2019, 0:07
автор: Cheshire_Cat
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыРедактор. Удаленно. 35-50к
0 Partnerkin_mw 1167 29.10.2019, 13:19
автор: Partnerkin_mw


 



RSS Текстовая версия Сейчас: 18.4.2024, 16:35
Дизайн