Я хочу сделать отступ для выделенного текста в <textarea> на 4 пробела, как это делает StackOverflow для кода, используя jQuery. Я делаю это, чтобы создать текстовый редактор, похожий на SO, но только с базовой функциональностью.
Мне не нужны ссылки или предложения на готовые редакторы; У меня есть все, что я хочу, но моя проблема выше. Может ли кто-нибудь подсказать, как сделать отступ для выделенного текста или какие-нибудь фрагменты кода?
Спасибо.
Ответ 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)
);
}