Цитата выделенного текста на JavaScript

Раздел языка JavaScript.
Аватара пользователя
Slash
Администратор
Сообщения: 2113
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 71 раз

Цитата выделенного текста на JavaScript

Сообщение Slash » Вс июн 19, 2016 10:19 am

Решил написать простенький скрипт цитаты выделенного текста на JavaScript. Его задача при вызове функции цитаты получить выделенный текст на странице, получить текст, что находится в textarea (если он там есть), поставить выделенный текст, после текста, что был в форме и заменить его на то что был в textarea. Если функция была вызвана без выделенного текста на странице, пользователь получит соответствующее сообщение.
Скрипт цитаты:

Код: Выделить всё

function quote() {
    var quote = document.getSelection();
    if (quote != '') {
        var text = document.getElementById('textarea').innerHTML;
        document.getElementById('textarea').innerHTML = (text != '' ? text + '\n' + quote : quote);
    }
    else {
        alert('Текст не выделен');
    };

    return false;
}; 
Работу скрипта можно проверить на данном HTML примере:

Код: Выделить всё

<div>Цитата выделенного текста на JavaScript
    <div><a href="#" onClick="quote();">Цитата выделенного</a></div>
</div>
<form>
    <textarea id="textarea"></textarea>
</form> 
Если есть необходимость обвернуть цитату в BBcode, например: [quote][/quote], делаем так:
После строчки:

Код: Выделить всё

        var text = document.getElementById('textarea').innerHTML;
Вставляем:

Код: Выделить всё

        quote    = '[quote]' + quote + '[/quote]';
Если необходимо, чтобы ссылка Цитата выделенного, была только когда на странице есть выделенный текст, то есть появлялась и скрывалась вместе с выделением, то делаем так:
Изменяем ссылку:

Код: Выделить всё

<a href="#" onClick="quote();">Цитата выделенного</a>
Вот так:

Код: Выделить всё

<a href="#" onClick="quote();" id="quote" style="display: none;">Цитата выделенного</a>
И дописываем JS:

Код: Выделить всё

document.onmouseup = function() {
    var allotment = window.getSelection();
    var a = document.getElementById('quote');
    if (allotment != '') {
        if (a.style.display == 'none') {
            a.style.display = 'block';
        };
    }
    else {
        if (a.style.display == 'block') {
            a.style.display = 'none';
        };
    };
};
Вот пока все. Надеюсь мой пост оказался полезным.
Спасибо за внимание.

Реклама

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость