Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.10.2012, 23:44
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Замена символов на bbcode без "потери" курсора
Подскажите, пожалуйста, как корректно заменить символы на bbcode в textarea во время ввода, не "потеряв" курсор?

Нужно сразу после ввода m1 и m2 в textarea заменить их на ббкоды [math1][/math1] и [math2][/math2] соответственно при этом не "потерять" курсор, т.е. чтобы он после замены оказывался между открывающим и закрывающим тегами.

Что-то получилось, только в IE, если теги не на первой строке, курсор не устанавливается между открывающим и закрывающим тегами

<script type="text/javascript">
function setSelectionRange(input, selectionStart, selectionEnd) {
  if (input.setSelectionRange) {
    input.focus();
    input.setSelectionRange(selectionStart, selectionEnd);
  }
  else if (input.createTextRange) {
    var range = input.createTextRange();
    range.collapse(true);
    range.moveEnd('character', selectionEnd);
    range.moveStart('character', selectionStart);
    range.select();
  }
}

function setCaretToPos (input, pos) {setSelectionRange(input, pos, pos);}

function insertTags(obj)
{   obj = document.getElementById('abcd');
    var str = obj.value;
    if(obj.value.indexOf('m1')!=-1) obj.value = str.replace('m1','[ math1][/math1 ]');
    if(obj.value.indexOf('m2')!=-1) obj.value = str.replace('m2','[ math2][/math2 ]');

    var tag1 = obj.value.indexOf('[ math1][/math1 ]'),
        tag2 = obj.value.indexOf('[ math2][/math2 ]');
    if(tag1!=-1) setCaretToPos(obj, tag1+8);
    if(tag2!=-1) setCaretToPos(obj, tag2+8);
}
</script>

<textarea id="abcd" onkeyup="insertTags()" style="width:300px; height:100px;">Lorem ipsum dolor sit amet</textarea>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить координаты курсора в текстовом поле в пикселях prike Events/DOM/Window 4 23.05.2013 04:35
Замена контента в ячейке страницы без перезагрузки страницы SER Элементы интерфейса 1 24.03.2011 22:04
Удалить ряд символов перед или после курсора до определенного сивола brd Javascript под браузер 3 30.10.2009 08:20