Показать сообщение отдельно
  #1 (permalink)  
Старый 02.09.2012, 22:12
Интересующийся
Отправить личное сообщение для f00rZik Посмотреть профиль Найти все сообщения от f00rZik
 
Регистрация: 05.01.2012
Сообщений: 10

Редактирование текста
Здравствуйте, разрабатываю сайт, требуется помощь по работе со строками.
Написано пару функций, есть 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("Вы забыли выделить текст !!!");
}
}
}
Ответить с цитированием