Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   В каком Input фокус? (https://javascript.ru/forum/dom-window/23799-v-kakom-input-fokus.html)

Почемучкин 06.12.2011 22:22

В каком Input фокус?
 
Как узнать в каком Input или TextArea в данный момент установлен фокус?

ksa 07.12.2011 09:41

Почемучкин, по какому событию ты это собираешся узнавать?

Pavel M. 07.12.2011 10:41

Цитата:

Сообщение от Почемучкин
Как узнать в каком Input или TextArea в данный момент установлен фокус?

может это поможет http://api.jquery.com/focus-selector/

Почемучкин 07.12.2011 22:47

Нет, нужно на чистом JavaScript.
ksa, допустим - по таймеру. Или при нажатии на картинку.

Почемучкин 07.12.2011 22:51

Кажется, вот это подходит:

document.activeElement

но я не знаю как у него с кроссбраузерностью

trikadin 07.12.2011 22:54

Не такое, нет?

<input id="inp1" />
<input id="inp2" />
<input id="inp3" />
<script>
var focusedInput;
var inp= document.getElementsByTagName("input");
var check= function(){focusedInput=this};
for (var i=0; i!= inp.length; ++i)
 inp[i].onfocus=check;
</script>
<br />
<input type="button" onclick="alert('В последний раз фокус был на элементе с идентификатором ' + (focusedInput && focusedInput.id))" value="Посмотреть"/>

devote 07.12.2011 23:24

<html>
<body>
<div id="output"></div>
<div>Elem 1</div>
<div>Elem 2</div>
<a href="">tarattattartra</a>

<button>blah</button>

<script type="text/javascript">
(function(){
    var listener = document.addEventListener ? ['addEventListener', 'DOMFocusIn', 'DOMFocusOut'] : ['attachEvent', 'onfocus', 'onblur'];
    document[ listener[ 0 ] ]( listener[ 1 ], function( e ){
        document.focusedElement = e ? e.target : window.event.target;

        document.getElementById('output').innerHTML = 'Фокус имеет элемент с текстом: "' + document.focusedElement.innerHTML + '"';

    }, false);
    document[ listener[ 0 ] ]( listener[ 2 ], function( e ){
        document.focusedElement = null;
        document.getElementById('output').innerHTML = 'Нет элемента в фокусе';
    }, false);
})();

</script>
</body>
</html>

devote 07.12.2011 23:27

Хотя в ие не проверял, возможно работать не будет

ksa 08.12.2011 10:09

Цитата:

Сообщение от Почемучкин
при нажатии на картинку

При клике активным становится "кликнутый" элемент...

Цитата:

Сообщение от Почемучкин
Кажется, вот это подходит:
document.activeElement

но я не знаю как у него с кроссбраузерностью

В любом случае с тебя тестовый пример... :D

Маэстро 08.12.2011 16:53

проверил работу document.activeElement
работает в
-Google Chrome 15
-IE 8
-Opera 11.52
-Fire Fox 8


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