Отступ выделенного текста 4 пробела - PullRequest
5 голосов
/ 16 июля 2011

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

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

Спасибо.

Ответы [ 2 ]

5 голосов
/ 16 июля 2011
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);
}

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

1 голос
/ 16 июля 2011

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

function indentSelection(textarea) {
  $(textarea).val(
        $(textarea).val().substring(0, textarea.selectionStart)
          + $(textarea).getSelection().text.replace(/\n/m,'    \n')
          + $(textarea).val().substring(textarea.selectionEnd)
   );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...