Здравствуйте, разрабатываю сайт, требуется помощь по работе со строками.
Написано пару функций, есть textarea в ней написан текст, когда человек выделяет часть текста, можно кликнуть по стилям и добавить их. например bold (жирный) и сразу-же выводится в контейнере (динамически)
Есть проблема в функции, если в textarea введено несколько одинаковых слов, и одно из них выделено, любое. То когда человек хочет сделать его жирным или наоборот убрать жирный, функция делает это только с первым словом в строке, как сделать, чтобы работало с тем словом которое человек выделил ? например
Код:
|
www.domen.ru - ваш сайт www.domen.ru находится в топовых позициях. я выделю второй в строке домен, а функция всё равно обратиться к первому. |
Прошу помощи
function replaceSelectionFragment(id) {
var d=document,a=d.getElementById(strnum),w=window,b;
if (a&&a.value) { // если передаем элемент, и у него есть value
b = a.value.substring(a.selectionStart, a.selectionEnd);
if(b !=''){
if(id=='bold'){
var phrase = b;
var src = $("#draggable"+strdrag+" span").html();
var re = new RegExp ('<b>.*?'+phrase+'.*?<\/b>');
alert(src.search(re));
var res = src.match(re);
if(res!=null) {
var replacement = "</b>"+phrase+"<b>";
//alert(src+" --- "+phrase+" есть b");
} else {
var replacement = "<b>"+phrase+"</b>";
//alert(src+" --- "+phrase+" нет b");
}
//$("#"+strnum).html($("#"+strnum).html().replace(phrase, replacement));
$("#draggable"+strdrag).html(
$("#draggable"+strdrag).html().replace(phrase, replacement)
);
//alert(b+"<b>---asd</b>");
}
}else{
alert("Вы забыли выделить текст !!!");
}
}
}