Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > переход к курсору


Автор: maxipub 28.3.2011, 15:08
привет

есть функция, модифицирующая содержимое textarea
необходимо чтобы после вставки текста, курсор и прокрутка textarea перемещались к вставленному тексту

я в javascript не силен, пока вот что наработал:

Код

<script>
function test()
{
    ta = document.getElementById("text");
    ta.value += "...\n";
    ta.focus();
}
</script>

<a href="#" onclick="test();">click me!</a><br />
<textarea id="text" cols=20 rows=5>
1
2
3
4
5
6
7
8
9
</textarea>


дальше продвинуться не выходит

нид хелп smile  smile 

Автор: maxipub 29.3.2011, 13:08
Никак? smile 

Автор: CruorVult 29.3.2011, 14:26
Код

ta.scrollTop = ta.scrollHeight;


Автор: maxipub 29.3.2011, 14:41
CruorVult, жестко. smile Благодарю!


Ща похаваю, пойду еще маны почитаю по сабжу.

Автор: maxipub 30.3.2011, 16:12
Тэкс, нашел время, поюзал. Немного не то.

Просто в примере идет вставка в конец textarea, но в реальных условиях не всегда так будет.

Нужен переход именно к курсору. Как быть?

Автор: ksnk 30.3.2011, 16:29
http://www.tigir.com/javascript.htm не поможет?

Автор: maxipub 30.3.2011, 16:38
ksnk, вы говорите за "Как получить позицию текстового курсора в textarea элементе (textarea - позиция курсора)" ?

Уже пробовал. Эта функция возвращает позицию курсора (в символах), а scrollTop устанавливает прокрутку в пикселях.

Если не так, поправьте.

Автор: ksnk 30.3.2011, 17:16
Цитата(maxipub @  28.3.2011,  15:08 Найти цитируемый пост)
после вставки текста, курсор и прокрутка textarea перемещались к вставленному тексту


Вроде как нужно контролировать и то и другое?..

Есть проект http://forum.dklab.ru/viewtopic.php?t=20856 и в нем http://svn.debugger.ru/repos/jslibs/BrowserExtensions/trunk/documentselection.js.
Imho, немного многовато - +800 строк для перемешения курсора, однако там описана работа с фреймами, текстареа и инпутбоксами. В основном работа с фреймами занимает много места.  Если повыкидывать лишнее - можно сократить примерно в 2 раза, если это покажется необходимым.

Чтобы установить курсор в нужное место - можно пользоваться методом setRange. чтобы  отскроллировать видимую часть к курсору - метод keepScroll


Автор: maxipub 30.3.2011, 17:20
ksnk, курсор никак дополнительно контролировать не надо.

Вопрос именно в том, как прокрутить окно к курсору.

Автор: ksnk 30.3.2011, 17:23
Цитата(maxipub @  30.3.2011,  17:20 Найти цитируемый пост)
Вопрос именно в том, как прокрутить окно к курсору. 

Цитата(ksnk @  30.3.2011,  17:16 Найти цитируемый пост)
чтобы  отскроллировать видимую часть к курсору - метод keepScroll

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)