Как заменить выделенный текст в текстовой области 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, вы можете найти больше здесь.

Я надеюсь, что это поможет вам:)

Другие вопросы по тегам