вставьте этот код в условие if if в конце.

ставить текст до и после выделения в текстовой области с помощью JavaScript? Выделение происходит в поле текстовой области формы HTML

 Riccardo17 янв. 2011 г., 15:48
Почти смотри ниже :-)
 Hemlock17 янв. 2011 г., 15:45
Тогда у вас есть свой ответ.
 Riccardo17 янв. 2011 г., 15:43
достаточно современных браузеров
 Hemlock17 янв. 2011 г., 15:42
Вам нужна широкая поддержка браузеров или современных браузеров будет достаточно (другими словами, IE не будет, по крайней мере, до выхода 9)?

Ответы на вопрос(2)

который работает в IE, MFF и GC, где myField является ссылкой на объект. Собранный несколькими сценариями, найденными через сеть.

function insertAtCursor(myField, myValueBefore, myValueAfter) {

    if (document.selection) {

        myField.focus();
        document.selection.createRange().text = myValueBefore + document.selection.createRange().text + myValueAfter;


    } else if (myField.selectionStart || myField.selectionStart == '0') {

        var startPos = myField.selectionStart;
        var endPos = myField.selectionEnd;
        myField.value = myField.value.substring(0, startPos)+ myValueBefore+ myField.value.substring(startPos, endPos)+ myValueAfter+ myField.value.substring(endPos, myField.value.length);

    } 
}
 Frug13 апр. 2014 г., 06:40
Однако он не помещает курсор после закрывающих тегов, когда это сделано.
 Frug13 апр. 2014 г., 06:31
Отлично, сжато и подтверждено работает в FF 28 и IE 11
 Samintha Kaveesh05 дек. 2017 г., 17:59
Для тех, кто ищет фокусировку каретки внутри текстовой области,myField.focus(); myField.selectionStart = startPos + myValueBefore.length; myField.selectionEnd = endPos + myValueBefore.length; вставьте этот код в условие if if в конце.
Решение Вопроса

var selectionText = yourTextarea.value.substr(yourTextarea.selectionStart, yourTextarea.selectionEnd);
yourTextarea.value = "Text before" + selectionText + "Text after";

Если вы хотите найти + заменить, то следующий код поможет (в браузерах не IE)

var textBeforeSelection = yourTextarea.value.substr(0, yourTextarea.selectionStart);
var textAfterSelection = yourTextarea.value.substr(yourTextarea.selectionEnd, yourTextarea.value.length);
yourTextarea.value = textBeforeSelection + " new selection text " + textAfterSelection;
 Tim Down17 янв. 2011 г., 16:14
@Riccardo: Нет, jQuery не справляется с этим, хотя существуют подключаемые модули jQuery.
 Riccardo17 янв. 2011 г., 15:47
Я думаю, что образец выше заменит все текстовое содержимое ... может быть, есть способ поиска и замены?
 Matschie17 янв. 2011 г., 15:55
Если вы хотите найти + заменить, то вы можете просто прочитать текст до выбора, а затем до конца. Я отредактирую ответ abov, чтобы показать вам именно то, что я имею в виду.
 Riccardo17 янв. 2011 г., 16:01
JQuery будет решать проблемы кроссбраузера?
 Hemlock17 янв. 2011 г., 15:41
Вам нужно будет сделать что-то еще для IE, если вы хотите поддержать это.

Ваш ответ на вопрос