Залил пример, попробуйте -
codepen.io/anon/pen/rxKGwZ<textarea id="text"></textarea>
<button id="go">Кнопка</button>
function replaceSelectedText(elem, str){
elem.focus();
if (document.selection){
var s = document.selection.createRange();
if (s.text){
eval("s.text="+str+"(s.text);");
s.select();
return true;
}
}
else if (typeof(elem.selectionStart) == "number"){
if (elem.selectionStart!=elem.selectionEnd){
var start = elem.selectionStart;
var end = elem.selectionEnd;
eval("var rs = "+str+"(elem.value.substr(start,end-start));");
elem.value = elem.value.substr(0,start)+rs+elem.value.substr(end);
elem.setSelectionRange(end,end);
}
return true;
}
return false;
}
//оборачиваем текст в нужные теги и т.д.
function change_str(s){return "<b>"+s+"</b>"}
// по клику на кнопку, выделенный текст будет заменен на текст с тегами
document.getElementById('go').onclick = function() {
replaceSelectedText(document.getElementById('text'), 'change_str');
}