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

Раздел языка JavaScript.
Аватара пользователя
Slash
Администратор
Сообщения: 2031
Поблагодарили: 62 раза

Цитата выделенного текста на 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';
        };
    };
};

Вот пока все. Надеюсь мой пост оказался полезным.
Спасибо за внимание.
Реклама

Вернуться в «JavaScript»

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

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