Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создание bb-кодов (https://javascript.ru/forum/misc/15284-sozdanie-bb-kodov.html)

(Sandr) 20.02.2011 13:19

Создание bb-кодов
 
Всем здрасте) Подскажите, как сделать бб-коды на сайте?
Вот мой код, но он не доделан до конца(( а если быть точнее, то я не пойму как в переменную select загнать выделенный текст..
<script>
function bbcods(bbcod)
		{
		var textareaobj = document.getElementById('valueid'); 
			var bbopen = '['+bbcod+']';
			var bbclose = '[/'+bbcod+']';
			var select = 
			textareaobj.value = bbopen+select+bbclose;
		}

</script>

<a href="javascript:void(0)" onclick="bbcods('b')"><b>Жирный текст</b></a><br>
<form action="адрес" method="POST">
<textarea rows=5 cols=25 name="mess" id="valueid"></textarea><br>
<input type="submit" value="Отправить">
</form>

monolithed 20.02.2011 14:33

<script type="text/javascript">
window.onload = function() {
    var codes = document.getElementById('codes').getElementsByTagName('a'), array = ['B', 'U', 'I'], i = codes.length;

    while(i--) {
        codes[i].onclick = function(i) {
            return function() {
                addBB('['+i+']', '[/'+i+']');
                return false;
            };
        }(array[i]);
    }
};

function addBB(ltag, rtag) {
    var textarea = document.form.elements[0];
    textarea.focus();

    if(document.selection && document.selection.createRange) {
        sel = document.selection.createRange();
        if (sel.parentElement() == textarea)  sel.text = ltag + sel.text + rtag;
    } 
    else if(typeof(textarea) != undefined) {
        var start = textarea.selectionStart, end = textarea.selectionEnd;
        textarea.value = textarea.value.substring(0, start) + ltag + textarea.value.substring(start, end) + rtag+ textarea.value.substring(end, textarea.value.length|0); 
    } 
    else textarea.value += ltag + rtag; 
}
</script> 

<style type="text/css">
a {
    background: #F7F7F7;
    border: outset white 1px;
    color: #000;
    font: 10pt/10px sans-serif;
    padding: 0px 5px;
    text-decoration: none;
}
</style>

<div id="codes">
    <a href="#"><b>B</b></a>
    <a href="#"><u>U</u></a>
    <a href="#"><i>I</i></a>
</div>
<form name="form" action="" method="post"> 
    <textarea cols="50" rows="5"></textarea> 
</form>

(Sandr) 20.02.2011 15:53

monolithed, О_о чувак.. это как-то громоздко получилось))) Ведь можно как-то компактнее? Мой основной вопрос в том, как переменной select присвоить выделенный текст?

monolithed 20.02.2011 17:49

Цитата:

Сообщение от (Sandr)
О_о чувак.. это как-то громоздко получилось)))

кроссбраузерно, наверное нет

Цитата:

Сообщение от (Sandr)
Ведь можно как-то компактнее?

если найдете компактней, скажите мне

(Sandr) 20.02.2011 17:58

вот компактнее :)
http://iceman12.ru/obramlenie-bb-kod...elennyj-tekst/

monolithed 20.02.2011 18:12

Цитата:

Сообщение от (Sandr)

сильно ошибаетесь!

если хоть немного попробуете напрячь мозг, то увидите, что для работы с BB-codes в моем коде всего одна функция addBB(), остальное - добавление обработчиков событий!
В приведенном же вами примере если обработчики событий вынести из HTML, то код разрастется куда больше ;)

(Sandr) 20.02.2011 18:38

monolithed, товарищ спасибо за помощь, но мне просто нужно переменной select присвоить выделенный текст, и узнать каким образом поставить фокус между двумя кодами, т.е. [тэг]сдесь[/тэг]
Я читал про focus() и искал про получение выделенноего текста, но в том, что я нашёл я ничё не понял..

(Sandr) 21.02.2011 10:31

Кто-нибудь может ответить?

walik 21.02.2011 10:46

Как взять выделенный текст из textarea

(Sandr) 21.02.2011 22:04

Всем спасибо)) Всё получилось)


Часовой пояс GMT +3, время: 04:07.