Как переместить курсор между тегами?
От: alex-v  
Дата: 29.08.09 07:31
Оценка:
Написал свой форум. Нарыл код JS вставки тегов в textarea.
А вот как сделать, чтобы при вставке пустых тегов курсор помещался между ними?
А то он в конец тегов перемещается...

Вот код, помогите дописать.


function add_tags(str1, str2)
{
   var obj=document.getElementById("memo1");
   obj.focus(); 
 
   if(document.selection) 
   {
      var s = document.selection.createRange();            
      s.text = str1 + s.text + str2;
   }else
   {
      var len = obj.value.length; 
      var start = obj.selectionStart; 
      var end = obj.selectionEnd; 
 
      var scrollTop = obj.scrollTop; 
      var scrollLeft = obj.scrollLeft; 
 
      var sel = obj.value.substring(start, end); 
      var rep = str1 + sel + str2; 
      obj.value =  obj.value.substring(0,start) + rep + obj.value.substring(end,len); 
 
      obj.scrollTop = scrollTop; 
      obj.scrollLeft = scrollLeft;    
   }
}
С Богом. Александр.
Re: Как переместить курсор между тегами?
От: Mikhail Polykovsky Россия http://glader.ru
Дата: 29.08.09 11:10
Оценка:
Здравствуйте, alex-v, Вы писали:

AV>Написал свой форум. Нарыл код JS вставки тегов в textarea.

AV>А вот как сделать, чтобы при вставке пустых тегов курсор помещался между ними?
AV>А то он в конец тегов перемещается...

Мне советовали переназначать selectionStart и selectionEnd после вставки, но я еще не пробовал

element.selectionStart = start + text.length
element.selectionEnd   = start + text.length
Re[2]: Как переместить курсор между тегами?
От: alex-v  
Дата: 29.08.09 19:09
Оценка:
добрые люди подсказали код


<textarea id="memo1" cols="25" rows="5">aaaa bbbb cccc</textarea>
<input type="button" onmousedown="add_tags('', '')" onclick="restore_selection()" value="Bold" />
<script type="text/javascript">
var ie //@cc_on = true;
var range;
var textarea = document.getElementById("memo1");
 
function add_tags(str1, str2) {
    var text, offset;
    var selection = document.selection || getSelection();
    if(ie) {
        range = selection.createRange();
        text = range.text;
        range.text = str1 + text + str2;
        offset = str2.length;
        range.moveStart("character", -text.length - offset);
        if(text.length) {
            range.moveEnd("character", -offset);
        } else {
            range.collapse();
        }
    } else {
        var selStart = textarea.selectionStart; 
        var selEnd = textarea.selectionEnd;
        text = textarea.value;
        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;
    }
}
 
function restore_selection() {
    textarea.focus();
    if(ie) {
        range.select();
    }
}
</script>
С Богом. Александр.
Re: Как переместить курсор между тегами?
От: serg54  
Дата: 30.08.09 05:38
Оценка:
Здравствуйте, alex-v, Вы писали:

AV>Написал свой форум. Нарыл код JS вставки тегов в textarea.

AV>А вот как сделать, чтобы при вставке пустых тегов курсор помещался между ними?
AV>А то он в конец тегов перемещается...

AV>Вот код, помогите дописать.


Попробуй так
...

AV> if(document.selection)

AV> {
AV> var s = document.selection.createRange();
AV> s.text = str1 + s.text + str2;
s.move("character",-str2.length);s.collapse();s.text='';
Re[2]: Как переместить курсор между тегами?
От: alex-v  
Дата: 30.08.09 05:52
Оценка:
Здравствуйте, serg54, Вы писали:

S>Попробуй так


AV>>   if(document.selection) 
AV>>   {
AV>>      var s = document.selection.createRange();            
AV>>      s.text = str1 + s.text + str2;
S>s.move("character",-str2.length);s.collapse();s.text='';


А что это даст? У меня и тот код работает.
С Богом. Александр.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.