Написал свой форум. Нарыл код 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;
}
}
С Богом. Александр.
Здравствуйте, alex-v, Вы писали:
AV>Написал свой форум. Нарыл код JS вставки тегов в textarea.
AV>А вот как сделать, чтобы при вставке пустых тегов курсор помещался между ними?
AV>А то он в конец тегов перемещается...
Мне советовали переназначать selectionStart и selectionEnd после вставки, но я еще не пробовал
element.selectionStart = start + text.length
element.selectionEnd = start + text.length
добрые люди подсказали код
<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>
С Богом. Александр.
Здравствуйте, 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='';
А что это даст? У меня и тот код работает.
С Богом. Александр.