2012-05-18 2 views
1

Я хотел бы, чтобы функция обратного вызова выполнялась каждый раз, когда каретка или выбор перемещаются в текстовой области.
Кто-нибудь знает, как это сделать?Возможно ли смотреть позицию каретки в текстовом поле без опроса?

Редактировать: Я знаю, как получить позицию каррета. Меня интересует, как следить за изменениями. С моими текущими знаниями я бы проверил положение карьера на каждом keyup/mousemouve/mouseup. Есть ли более умный (и более эффективный) способ сделать это. Есть ли событие, которое может изменить положение каррета, о котором я не думал?

+0

Как насчет onKeyPress и onClick? –

+0

Это будет onkeydown! Потому что, если он хочет переопределить базовую функциональность (например, вставить 4 пробела при нажатии вкладки), он должен сделать это до событий с клавиатурой или клавишами. – benqus

+0

Решение зависит от того, что OP хочет сделать в своей функции обратного вызова, но в целом события «keydown» и «textinput» (последний для резки/вставки с выбранными контекстными пунктами «Вырезать»/«Вставить») с помощью мыши) являются его друзьями. –

ответ

0

В конце концов, я, наконец, нашел после изучения каждого из возможных решений, что нет никакого совершенного способа сделать это для больших объемов текста.

У меня нет другого решения, кроме как ждать, пока мое веб-приложение удовлетворит технические требования для использования библиотеки замены современной текстовой области (= не зависит от режима quirks).

2

Есть событие DOM onSelect, которое вы можете использовать, но оно будет только поднимать движения каретки, когда это движение влияет на выбор. Вот JSBin с демо:

http://jsbin.com/eyaril/4/edit

Просто выделите текст в окне и просмотреть результат в поджигатель.

+0

Я не знал этого события. Спасибо за событие tip, если это только часть решения –

Смежные вопросы