Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   определить где курсор (https://javascript.ru/forum/misc/9054-opredelit-gde-kursor.html)

olgatcpip 27.04.2010 08:59

определить где курсор
 
Здравствуйте.

Нужно определить в каком имено текстовом поле курсор находится именно сейчас, главное его id.
т.е есть, например 2 тексовых поля
<textarea id="txt_1"></textarea>
<textarea id="txt_2"></textarea>
<input type="submit" value="Где курсор?">

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

т.е.например пишем в txt_1, нажимаем на кнопку, получает id="txt_1". аесли пишем в во втором поле, то получаем ид воторго поля.

Я единственое что могу полагать, так это перебором определять где курсор.
Т.е. в цикле по текстовым полям, что-то вроде этого
functin func(){
for(var i=1; i<3;i++){
  obj = document.getElementById("txt_"+i);
  if(!obj) continue;
  // тут как-то определить, что есть в нем курсор
   if(нашли тут курсор){
     alert('id = txt_'+i);
     return;
   }
}
alert('Курсор не нашли');
}
есть способ проще?

Skipp 27.04.2010 09:13

Используй события

olgatcpip 27.04.2010 09:19

Skip , пардон, но мне нужно не на объект событие навесить, а по событию определить в каком объекте. понятно что оно произойдет в window, а конечный дочерний объект какой?

Skipp 27.04.2010 09:22

почему в window?

<textarea id="txt_1" onclick="func(this)"></textarea>
<textarea id="txt_2" onclick="func(this)"></textarea>


функция получит тот элемент на который кликнули.
Есть ещё море способов.

А дочерние элементы firstChild и поехал дальше nextSibling

micscr 27.04.2010 09:36

Может так попробовать:
<textarea id="txt_1" onfocus="where = this;">1</textarea>
<textarea id="txt_2" onfocus="where = this;">2</textarea>
<input type="text" onfocus="where = null;">
<button onclick="(where) ? alert(where.id) : alert('Не выбрана текстареа');">траляля</button>

<script type="text/javascript">
var where = null;

</script>

subzey 27.04.2010 09:59

Как только Вы нажмете кнопку, фокус с другого элемента формы снимется.

Если же Вы имеете в виду клавишу на клавиатуре, то все значительно проще: вешаем обработчик keydown или keypress на document, а потом смотрим, от кого пришло событие:
e.srcElement||e.target
, где e - первый параметр функции-обработчика.


Часовой пояс GMT +3, время: 03:53.