Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Новичку нужен совет:) (https://javascript.ru/forum/misc/10124-novichku-nuzhen-sovet.html)

pashaiva 20.06.2010 12:42

Новичку нужен совет:)
 
Здравствуйте! Подскажите как сделать чтобы пользователь писал статью на моей страничке сайта, выделял нужный текст, нажимал нужную кнопку и в соответствии с нажатой кнопкой в текст вставлялись теги(жирный, курсив, размер текста.....) . Типо того когда пишешь новую темы в этом форуме.

Если можно, то поподробнее, пожалуйста.

exec 20.06.2010 13:52

Доставайте выделенный текст через selectionStart/selectionEnd и заменяйте их через replace таким образом:

var e = textarea, // Ссылка на текстовое поле
st = e.selectionStart, // Начало выделения
en = e.selectionEnd; // Конец выделения
e.value = e.value.replace(e.value.slice(st, en), '[b]' + e.value.slice(st, en) + '[/b]');


Для IE немного по-другому: document.selection.createRange().text возвратит выделенный текст.

pashaiva 21.06.2010 12:34

Я дико извиняюсь, но как это связать с текстовым полем, чтобы было при нажатии кнопки???

exec 21.06.2010 12:45

Я же дал почти готовый код.

pashaiva 21.06.2010 12:47

а куда его вписывать??? И как сделать чтобы это все происходило по нажатию кнопки. Я что-то вообще не пойму.

exec 21.06.2010 13:06

Бегом учить основы.

pashaiva 21.06.2010 15:26

СПАСИБО!

рони 21.06.2010 19:30

))
Цитата:

Сообщение от exec
e.value = e.value.replace(e.value.slice(st, en), '' + e.value.slice(st, en) + '');

replace наверно тут не подойдёт нужно веть провести замену в строго определённом месте а не в первом встретившемся или похожих, но я это немножко использовал....и так зарисовка на тему вставки тегов) по мотивам форума http://javascript.ru/forum/
может кому сгодиться ...)))
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title>insert_tags</title>
</head>

<body>
 <script language="JavaScript" type="text/javascript">
 function insert_tags(b) {
    var a = document.getElementsByName("message")[0],
        c = a.selectionStart,
        d = a.selectionEnd;a.focus();
    if (typeof c == "number") {
        a.value = a.value.slice(0, c) + "[" + b + "]" + a.value.slice(c, d) + "[/" + b + "]" + a.value.slice(d);
        a.setSelectionRange(b.length + c + 2, b.length + d + 2);
        a.focus()
    } else if (document.selection) {
        a = document.selection.createRange();
        c = b.length + 3;
        d = a.text.length + c;
        a.text = "[" + b + "]" + a.text + "[/" + b + "]";
        a.moveStart("character", -d);
        a.moveEnd("character", -c);
        a.select()
    }
}
 </script>
<textarea name="message" cols="30" rows="3"></textarea><br />
<input name="color" value="[color]"   onclick="insert_tags('color')" type="button"/>
<input name="color" value="[b]"   onclick="insert_tags('b')" type="button"/>
</body>

</html>


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