我希望将<textarea>
中的选定文本缩进4个空格,就像StackOverflow对代码一样,使用jQuery。我这样做是为了创建一个类似于SO的文本编辑器,但只有基本的功能。
我不想要现成编辑的链接或建议;我有我想要的一切,但我的问题在上面。有人可以给我一些关于如何缩进所选文本或某些代码片段的指示吗?
感谢。
答案 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)
);
}