Как переместить курсор внутри тегов?
Написал свой форум. Нарыл код JS вставки тегов в textarea.
А вот как сделать, чтобы при вставке тегов курсор помещался посреди их? А то он в конец тегов перемещается... |
Range, TextRange и Selection
Создайте объект Range/TextRange с соответствующими границами и схлопните выделение. |
Цитата:
|
Внимательно читаем приведенную выше статью:
Цитата:
Для IE: Цитата:
Цитата:
Для W3C-совместимых браузеров: Цитата:
Цитата:
|
извините, что-то нифига не понял....
вот мой код вставки тегов в 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; } } Помогите дописать его, чтобы при вставке тегов когда нет выделения, чтобы курсор после вставки находился между тегами. |
Извените, но если вы не хотите немного подумать, за вас это никто делать не будет.
|
Цитата:
С Богом. |
Оказывается, для W3C-совместимых даже не нужен объект Range, все еще проще:
<textarea id="memo1" cols="25" rows="5">aaaa bbbb cccc</textarea> <input type="button" onmousedown="add_tags('[b]', '[/b]')" 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> |
Octane, спасибо большое за код!!! работает!
вы мне помогли. С Богом. |
Часовой пояс GMT +3, время: 20:06. |