Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проблема с BBcodes (https://javascript.ru/forum/dom-window/39172-problema-s-bbcodes.html)

Simones 18.06.2013 21:01

Проблема с BBcodes
 
Здравствуйте, форумчане ! Пишу небольшой скрипт bbcode и никак не могу справится с такой вот проблемой:
В textarea поле выделяю текст (ф-я getSelText), нажимаю на кнопку ббкода ( onclick="bbcode('', '', '#text');" ) но если выделенная комбинация попадается в самом поле, то затирается первая попавшиеся (т.е. не всегда та, которая была выделена).
getSelText:
function getSelText (){
  var userSelection, ta;
  if (window.getSelection && document.activeElement){
    if (document.activeElement.nodeName == "TEXTAREA" ||
        (document.activeElement.node
Name == "INPUT" &&
        document.activeElement.getAttrib
ute("type").toLowerCase() == "text")){
      ta = document.activeElement;
      userSelection = ta.value.substring(ta.selectionStart, ta.selectionEnd);
    return userSelection;
    } else {
      userSelection = window.getSelection();
    return userSelection;
    }

  } else {
    // all browsers, except IE before version 9
    if (document.getSelection){       
        userSelection = document.getSelection();
        return userSelection;
    }
    // IE below version 9
    else if (document.selection){
        userSelection = document.selection.createRange();
        return userSelection;
    }
  }
}


BBcode:
function bbcode(open,close,form) {

$(form).focus();
var select = getSelText(); //Выделенный текст
var now = $(form).val(); //Текущее содержимое текстового поля

if(select != '') {

var now = now.replace(select, open+select+close); //Замена выделенного
$(form).val(now);

}else{
$(form).val(now+open+close);
}

}

"Тяжелый" редактор, вроде wysiwyg не хотелось бы юзать, а вот как "свой" сделать корректно работающим ?
Заранее благодарен :)

рони 18.06.2013 22:53

Simones,
может так ? http://javascript.ru/forum/css-html/...tri-tegov.html

Simones 19.06.2013 13:50

Спасибо Вам огромное, это оно :)


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