Показать сообщение отдельно
  #1 (permalink)  
Старый 28.04.2010, 12:33
Новичок на форуме
Отправить личное сообщение для petr0007 Посмотреть профиль Найти все сообщения от petr0007
 
Регистрация: 16.02.2009
Сообщений: 8

Скрипт вставки BB кода
Здравствуйте, помогите решить следующую проблему:

Есть скрипт для вставки BB кода и сохранения выделения текста (т.е после вставки bb кода текст остаётся выделенным):

Код:
function click_bb(aid,Tag) {
  var Open='['+Tag+']';
  var Close='[/'+Tag+']';
	if (window.attachEvent && navigator.userAgent.indexOf('Opera') === -1) {
		var doc = document.getElementById(aid);
		doc.focus();
		sel = document.selection.createRange();
		sel.text = Open+sel.text+Close;
		doc.focus();
    }	else {
		docs = document.getElementById(aid);
		var doc = docs[0];
		var ss = doc.scrollTop;
		sel1 = doc.value.substr(0, doc.selectionStart);
		sel2 = doc.value.substr(doc.selectionEnd);
		sel = doc.value.substr(doc.selectionStart,
		doc.selectionEnd - doc.selectionStart);
		var text = doc.firstChild;
		doc.value = sel1 + Open + sel + Close + sel2;
		selPos = Open.length + sel1.length + sel.length + Close.length;
		doc.setSelectionRange(sel1.length, selPos);
		doc.scrollTop = ss;
	}
	return false;
}
Если сделать так:

Код:
<form name="form_name">
<a href="#" onclick="click_bb('area_id', 'b');">BB - 1</a>
<textarea id="area_id" cols="40" rows="4"></textarea>
</form>
То всё работает как нужно, если же написать так:

Код:
<form name="form_name">
<div onclick="click_bb('area_id', 'b');">BB - 1</div>
<textarea id="area_id" cols="40" rows="4"></textarea>
</form>
то в IE 6,7 срабатывает не правильно (тэги вставляются на текужее положение курсора и выделение не сохраняется)

Как можно исправить JavaScript, таким образом, что бы второй вариант работал верно?
Ответить с цитированием