Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вставка bb-кода: как сохранить выделение? (https://javascript.ru/forum/dom-window/15518-vstavka-bb-koda-kak-sokhranit-vydelenie.html)

Владимир2010 02.03.2011 15:58

Вставка bb-кода: как сохранить выделение?
 
Здравствуйте! Доброго времени суток!

Есть такой скрипт, который вставляет в textarea смайлики и bb-код. Работает под все браузеры. Но при вставке bb-кода вокруг выделенного текста он сбрасывает выделение.

Как сделать, чтобы выделение сохранялось?

Заранее благодарю.

Скрипт:

<script language="javascript" type="text/javascript"> 

function addText(Text,Message) 
{ 
  var obj = document.form.message; 

  obj.focus(); 

  if (document.selection && document.selection.createRange)  // Internet Explorer 
  { 
    sel = document.selection.createRange(); 
    if (sel.parentElement() == obj)  sel.text = Text; 
  } 

  else if (typeof(obj) != "undefined")  // Firefox 
  { 
    var longueur = parseInt(obj.value.length); 
    var selStart = obj.selectionStart; 
    var selEnd = obj.selectionEnd; 
    obj.value = obj.value.substring(0,selStart) + Text + obj.value.substring(selEnd,longueur); 
  } 

  else obj.value += Text; 
  obj.focus(); 
} 

function addTags(Tag,fTag,Message) 
{ 
  var obj = document.form.message; 

  obj.focus(); 

  if (document.selection && document.selection.createRange)  // Internet Explorer 
  { 
    sel = document.selection.createRange(); 
    if (sel.parentElement() == obj)  sel.text = Tag + sel.text + fTag; 
  } 

  else if (typeof(obj) != "undefined")  // Firefox 
  { 
    var longueur = parseInt(obj.value.length); 
    var selStart = obj.selectionStart; 
    var selEnd = obj.selectionEnd; 
    obj.value = obj.value.substring(0,selStart) + Tag + obj.value.substring(selStart,selEnd) + fTag + obj.value.substring(selEnd,longueur); 
  } 

  else obj.value += Tag + fTag; 
  obj.focus(); 
} 

</script>


Форма:

<form method="post" name="textform" action="obrabotchik.php"> 

<a title="Bold:" onmousedown="addTags('[B]','[/B]')" style="background-color:#F7F7F7; font-size:10pt; border: outset white 1px;">&nbsp;<b>B</b>&nbsp;</a> 

<img src="smile.gif" title="[:)]" onmousedown="addText('[:)]')"> 

<textarea wrap="VIRTUAL" name="message" cols="50" rows="10"></textarea>

</form>


:help:


Часовой пояс GMT +3, время: 06:39.