[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Преобразование bb кодов
cyberx
Здраствуите! Нашел простенький пример редактора bb кодов, но возникла одна проблема. Вот одна функция обрабатывает смайлики а другая текст.

function AddSmile(smile)
{
element = document.getElementById('ChatTextArea');
if (element.selectionStart || element.selectionStart == '0')
{
element.focus();
element.value = element.value.substring(0,element.selectionStart) + "<img src='images/smiles/"+smile+".gif' />";
}
}





function BBcode(id)
{
//тут id например b
var button_id = attribs = id;
if (/\[.*\]/.test(attribs)) {attribs = attribs.replace(/.*\[(.*)\]/, ' $1'); } else attribs = '';
var start = '['+button_id+attribs+']';
var end = '[/'+button_id+']';
element = document.getElementById('ChatTextArea');
if (document.selection)
{
element.focus();
sel = document.selection.createRange();
sel.text = start + sel.text + end;
}
else if (element.selectionStart || element.selectionStart == '0')
{
element.focus();
var startPos = element.selectionStart;
var endPos = element.selectionEnd;
element.value = element.value.substring(0, startPos) + start + element.value.substring(startPos, endPos) + end +
element.value.substring(endPos, element.value.length);
}
else
{
element.value += start + end;
}

}




Все работает но как сделать чтоб в textarea вставлялся уже преобразованный код, смайлик и текст? После отправки проблем нет, на пхп я обрабатываю, не знаю как тут обработать.



Спустя 3 минуты, 34 секунды (26.08.2010 - 22:35) twin написал(а):
Преобразованный в текстарею не вставишь. Она не может интерпретировать HTML. Нужно что то поверх её ставить. Див допустим. И в него уже пихать преобразования.

Спустя 12 секунд (26.08.2010 - 22:35) Basili4 написал(а):
http://phpforum.ru/index.php?showforum=133 загляни там этих bb кодеров до ... с головой в общем.

Спустя 49 минут, 51 секунда (26.08.2010 - 23:25) cyberx написал(а):
Basili4
Я все посмотрел и там также как и у меня.

twin
Не подскажите как это сделать? Может куда-нибудь div element надо ставить или как?

Спустя 5 часов, 48 минут, 50 секунд (27.08.2010 - 05:14) twin написал(а):
Ну это достаточно сложно, чтобы объяснить в двух строчках. Возьми какой-нибудь визивиг редактор и посмотри как там это устроено. Только если у тебя bb-коды, придется свой парсер на стороне клинта еще делать.

А проще сделать это аяксом.

Спустя 5 часов, 45 минут, 14 секунд (27.08.2010 - 10:59) cyberx написал(а):
Вот я несколько посмотрел и странно у них textarea.

Спустя 24 минуты, 56 секунд (27.08.2010 - 11:24) twin написал(а):
Там в самом скрипте наверняка есть что то типа document.write и так далее. Вот это и генерит приемник.

Спустя 28 минут, 20 секунд (27.08.2010 - 11:52) cyberx написал(а):
Вот узнал что с помощью <div contenteditable='true'></div> с дивом можно много чего делать. Попробовал сделать так но но получилось, это по моему относится только к формам


<div id='mytext' contenteditable='true'></div>
<a
onClick="BBCode();">click</a>



function BBCode()
{
var button_id = attribs = 'b'; // к примеру передал тег b
if (/\[.*\]/.test(attribs)) {attribs = attribs.replace(/.*\[(.*)\]/, ' $1'); } else attribs = '';
var start = '['+button_id+attribs+']';
var end = '[/'+button_id+']';
element = document.getElementById('mytext');
if (document.selection)
{
element.focus();
sel = document.selection.createRange();
sel.text = start + sel.text + end;
}
else if (element.selectionStart || element.selectionStart == '0')
{
element.focus();
var startPos = element.selectionStart;
var endPos = element.selectionEnd;
element.value = element.value.substring(0, startPos) + start + element.value.substring(startPos, endPos) + end +
element.value.substring(endPos, element.value.length);
}
else
{
element.value += start + end;
}
}



Можно это как то передал чтоб он с дивом работал? Может потом получается в div вставить изображение
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.