textarea и принудительное выделение

antonio

Moderator
Команда форума
textarea и принудительное выделение

А скажите-ка мне знатоки яваскрипта. Есть ли возможность яваскриптом принудительно в textarea сделать выделение нужного фрагмента текста и промотать его до этого фрагмента?

Всякие DHTML редакторы на базе ActiveX просьба не предлагать.
 

Voxus

founder (Старожил PHPCluba)
по-моему, не реально. даже innerHTML не спасет.
 

Макс

Старожил PHPClub
не знаю что ты имел ввиду под
нужного фрагмента текста
но думаю этот фрагмент скрипта тебе чем-то поможет:
Код:
<html>
<script>
function test() {
	obj = document.frm.txt.createTextRange();
	obj.findText("Этот текст нужно выделить");
	obj.select();
	obj.scrollIntoView();
}

</script>
<body onload="test();">
<form name="frm">
<textarea name="txt" cols="100" rows="10">
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
aaa bbb ccc ddd
veee Этот текст нужно выделить 
bla bla bla 
la la la 
yo yo yo
!!!!!!!!!!!!!!
</textarea>
</form>
</body></html>
ЗЫ
не обещаю что будет работать где-то за пределами IE5
 

antonio

Moderator
Команда форума
Все, спасибо, сам разобрался, работает как часы :))

function FindError(b,e) {
ta=document.forms["ScriptForm"].F_PROGRAMSCRIPT.createTextRange();
skiped=0;
s=new String(ta.htmlText);
for (i=1;i<=b+1;i++) if (s.substr(i,1)=='\n') skiped++;
ta.moveStart("character",-1000000000);
ta.moveEnd("character",-1000000000);
ta.moveStart("character",b-skiped);
for (i=b;i<=e-1;i++) ta.expand("character");
ta.select();
}

приходится делать изврат
ta.moveStart("character",-1000000000);
ta.moveEnd("character",-1000000000);
чтобы загнать обе позиции в 0, т.к. это относительные смещения.
 
Сверху