Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нужен скрипт а'ля панель BBCode 
:(
    Опции темы
Include
Дата 5.1.2006, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 1.8.2005

Репутация: нет
Всего: нет



Вот така у меня трабла. Мне нужно для сайта написать Java-скрипт (я в Java не оч ). Скрипт что-то напидобие панели BBCode как здеся, только для обычных html-тегов. Пробовал разобраться в скрипте который использует этот движок - разобрался не оч.
В основном скрипт должен помещать выделенный текст в TEXTAREA в html-теги соответствующие нажотой кнопки.
Please, help smile
PM MAIL   Вверх
Innuendo
Дата 6.1.2006, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



ну я не жадный...
пожалуйста.. не скажу что код полностью мой... разные коды из нета(в чатсности для ИЕ)+ доработка(для Мозиллы), и всё вместе получились теги bb code
1)Протестено IE, FireFox, Opera(на древних Операх траблы иногда)
2)Что делает:
вставляет на место курсора пару тегов (открытый+закрытый) если нет выделения, а если выделение есть, то обводит его тегами.

Вот твоя текстареа:
<textarea cols='70' rows='8' name='Post' id="tex" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onfocus="storeCaret(this);"></textarea>
ну кнопочки сам рисуешь smile
можешь кнопки, а можешь табличкой.
примерно: <input type="button" onclick = "insTxt()" onmouseover = "copyT('B')" value= "B">
это для <B>.
вот код функций:
Код

function copyT(code)
{if (typeof(document.getElementById('tex').caretPos) != 'undefined'){
if (window.getSelection) {text=window.getSelection()}
else if (document.selection) {text=document.selection.createRange().text;}
text='['+code+']'+text+'[/'+code+']'
}
else if (typeof(document.getElementById('tex').selectionStart) != 'undefined')
{
text = document.getElementById('tex').value.substring(document.getElementById('tex').selectionStart,document.getElementById('tex').selectionEnd)
text='['+code+']'+text+'[/'+code+']'
}

}

function copyTC(cl)
{if (typeof(document.getElementById('tex').caretPos) != 'undefined'){
if (window.getSelection) {text=window.getSelection()}
else if (document.selection) {text=document.selection.createRange().text;}
text='[COLOR='+cl+']'+text+'[/COLOR]'
}
else if (typeof(document.getElementById('tex').selectionStart) != 'undefined')
{
text = document.getElementById('tex').value.substring(document.getElementById('tex').selectionStart,document.getElementById('tex').selectionEnd)
text='[COLOR='+cl+']'+text+'[/COLOR]'
}

}

function storeCaret(element)
{
if (typeof(document.selection) != 'undefined' && typeof(document.selection.createRange) != 'undefined')
element.caretPos=document.selection.createRange().duplicate();
}

function insTxt()
{ var element = document.getElementById("tex")
if (!element)
return;
element.focus();
if (typeof(element.caretPos) != 'undefined')
element.caretPos.text = text;
else if (typeof(element.selectionStart) != 'undefined')
{
var newPos = element.selectionEnd + text.length;
element.value = element.value.substring(0, element.selectionStart) + text + element.value.substring(element.selectionEnd, element.value.length);
element.setSelectionRange(newPos, newPos);
}
else
element.value += text;
}

Поясняю:
insText- вставление... пишишь при нажатии на кнопку.
copyT - копирование выделения и составление стринга, пишешь при наведени на кнопку
copyTC - тоже что и copyT ,только для тегов цвета (там синтаксис бб кода чутос инной просто)
storeCaret - для текстареи, ввыши написано куда добавить.

Если тебе для быстрого ответа, то вот как выглядит он на моём форуме к примеру: скриншот
если надо, пиши в ПМ, скину весь код.


--------------------
=)
PM MAIL ICQ Jabber   Вверх
Aliance
Дата 6.2.2006, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Куда глаза только глядят…?!
http://forum.vingrad.ru/index.php?showtopic=35775
PM MAIL WWW ICQ Skype   Вверх
PARROT
Дата 7.2.2006, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 1
Всего: 50



Как сделать на яваскрипт ссылку и ее описание:
Код

[url=http://vasya]вася[/url]

Сначала выводится окно сценария, куда пользователь вводит ссылку, при нажатии кнопки ОК, выводится второе окно, для описания ссылки и все это вставляется в текстареа.
Вставить не проблема, а вот вывести сценарий не получается.
Код

<td title="вставить ссылку"><a href=# class=5><script>prompt("http://");</script>Ссылка</a></td>
                 <a href=# class=5 onMouseDown=pseudoTag('[url]','[/url]'); onMouseUp=d.all.txtmes.focus(); onClick=return!1>Ссылка</a></td>

Не полумается соединить в одно целое smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Aliance
Дата 7.2.2006, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Ты про код Sardar`а? Или про что-то другое?
Если про первое - обращайся ко мне, помогу. Я его использую в своем редакторе.
PM MAIL WWW ICQ Skype   Вверх
PARROT
Дата 7.2.2006, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 1
Всего: 50



Наверно у меня нечто другое.
Код

d=document;
function pseudoTag(t1,t2){if(d.selection){var tR=d.selection.createRange();
    var isEmpty=tR.text==''
    if(tR.parentElement().tagName!='TEXTAREA')(tR=d.all.txtmes.createTextRange()).collapse(!1);
    tR.text = t1+tR.text+t2;
    if(isEmpty)tR.move('character',-t2.length);
    tR.select();
}else d.getElementById('tA').value+=t1+t2;
}

Но нашла я этот код на нашем форуме. ХОтя все равно какой код, главное чтобы работало.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 8.2.2006, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 1
Всего: 50



Всем спасибо, работает. Дописали мой код:
Код

d=document;
function pseudoTag(t1,t2,t3,t4){if(d.selection){var tR=d.selection.createRange();
    var isEmpty=tR.text==''
    if(tR.parentElement().tagName!='TEXTAREA')(tR=d.all.txtmes.createTextRange()).collapse(!1);
    if (t3=='') {tR.text = t1+tR.text+t2;}
    else {tR.text = t1+t3+']'+t4+t2;}
    if(isEmpty)tR.move('character',-t2.length);
    tR.select();
}else d.getElementById('tA').value+=t1+t2;
}

function myfunc() {
         url=prompt('введите ссылку','http://');
         comm=prompt('введите описание','');
         pseudoTag('[url=','[/url]',url,comm)
        }



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0783 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.