缩进选定的文本4个空格

时间:2011-07-16 15:43:59

标签: jquery selection markdown indentation

我希望将<textarea>中的选定文本缩进4个空格,就像StackOverflow对代码一样,使用jQuery。我这样做是为了创建一个类似于SO的文本编辑器,但只有基本的功能。

我不想要现成编辑的链接或建议;我有我想要的一切,但我的问题在上面。有人可以给我一些关于如何缩进所选文本或某些代码片段的指示吗?

感谢。

2 个答案:

答案 0 :(得分:5)

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);
}

应该这样做。有关如何获取所选文本的示例(此处已缩短),请参阅How to get selected text in textarea?

答案 1 :(得分:1)

我会使用正则表达式replace()。只需用新行加四个空格替换换行符:

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