Как переместить курсор внутри тегов?
Написал свой форум. Нарыл код 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, время: 06:54. |