Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Отступ выделенного текста 4 пробела

Автор вопроса: BojanglesОтветов: 2

Я хочу сделать отступ для выделенного текста в <textarea> на 4 пробела, как это делает StackOverflow для кода, используя jQuery. Я делаю это, чтобы создать текстовый редактор, похожий на SO, но только с базовой функциональностью.

Мне не нужны ссылки или предложения на готовые редакторы; У меня есть все, что я хочу, но моя проблема выше. Может ли кто-нибудь подсказать, как сделать отступ для выделенного текста или какие-нибудь фрагменты кода?

Спасибо.

jquerymarkdownselectionindentation

Ответы

Ответ 1 · рейтинг 5 · marc

function indentSelection() {
    var selection = $(this).getSelection().text;
    var textarea = $(this);
    var result = '';
    var lines = selection.split('\n');
    var space = '    ';
    for(var i = 0; i < lines.length; i++)
    {
        result += space + lines[i] + '\n';
    }
    var new_text = textarea.val().split(selection).join(result);
    textarea.val(new_text);
}

Должен сделать это. Пример получения выделенного текста (здесь он был сокращен) см. в Как получить выделенный текст в текстовой области?

Ответ 2 · рейтинг 1 · Spudley

Я бы использовал для этого регулярное выражение replace(). Просто замените новую строку на новую строку плюс четыре пробела:

function indentSelection(textarea) {
  $(textarea).val(
        $(textarea).val().substring(0, textarea.selectionStart)
          + $(textarea).getSelection().text.replace(/\n/m,'    \n')
          + $(textarea).val().substring(textarea.selectionEnd)
   );
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы