Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > textarea установить курсор в нужное положение


Автор: neoks 12.5.2011, 12:14
Есть код вставки BB в textarea
Код

this.insertTab = function (str1,str2){
        
        var select_area_id = 'cp';
        
        var textarea = document.getElementById(select_area_id);
        var st = textarea.scrollTop;
        var text, offset;
        var selection = document.selection || getSelection();
        
        var selStart = textarea.selectionStart; 
        var selEnd   = textarea.selectionEnd;
            text     = textarea.value;
            
        if(str2){
            
            textarea.value = text.substring(0, selStart) + str1 + text.substring(selStart, selEnd) + str2 + text.substring(selEnd, text.length);
            offset = str1.length;
            textarea.selectionStart = selStart + offset;
            textarea.selectionEnd   = selEnd   + offset;

        }
        else{

            textarea.value = text.substring(0, selStart) + str1  + text.substring(selEnd, text.length);
            offset = str1.length;
            textarea.selection = selStart ;
            textarea.selectionEnd   = selEnd   + offset;
            
        }
        textarea.scrollTop      = st;
        
        textarea.focus();
    }


Не могу найти примера или название функции, как переместить курсор в нужное место например на 120 символ или больше.
Сейчас я пытаюсь переместить курсор на selStart + 4 символа, но не врубаюсь как ?

Автор: neoks 12.5.2011, 18:30
Все пришло озарение, немного подумал по какой причине меняя selStart и selEnd текст вставляется не правильно то есть туда куда я укажу.
Может все иза задержи времени! Хм так и есть, засунул в SetTimeout и установил задержку в 100 мили секунд.
И вот результат, Все работает.

Сам код:
Код

setTimeout(function(){
    textarea.setSelectionRange(selStart + 5,selEnd + 5);
},100)


Все всем Спасибо за внимание.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)