Как заменить выделенный текст в текстовой области Javascript?
У меня есть текстовая область и кнопка, которая добавляет следующий текст к текстовой области:
" - Элемент списка "
Если в текстовой области выделен какой-то текст, я бы предпочел, чтобы добавленный текст выглядел так:
"- (выделенный текст) "
Таким образом, способ сделать это - использовать функцию if, чтобы увидеть, есть ли текст, выделенный внутри текстовой области, а затем, если это правда, затем получить выделенный текст, чтобы его можно было добавить к тексту в текстовой области.
Добавление части может быть просто сделано с помощью document.getElementById(textarea).value += string
но я не уверен в том, что какой-то текст в текстовой области выделен и получен.
1 ответ
Для браузеров не IE вы можете сделать что-то подобное, используя свойства selectionStart и SelectionEnd объекта textarea:
function createListElement() {
if(document.activeElement === textarea) {
if(typeof textarea.selectionStart == 'number' && typeof textarea.selectionEnd == 'number') {
// All browsers except IE
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
var selectedText = textarea.value.slice(start, end);
var before = textarea.value.slice(0, start);
var after = textarea.value.slice(end);
var text = before + '- ' + selectedText + after;
textarea.value = text;
}
}
}
Но такие тривиальные манипуляции становятся все труднее для IE, вы можете найти больше здесь.
Я надеюсь, что это поможет вам:)