Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   вопрос по focusOut (https://javascript.ru/forum/jquery/29431-vopros-po-focusout.html)

see613 27.06.2012 17:50

вопрос по focusOut
 
Можно ли у события focusOut узнать на какой элемент при этом кликнули?
При этом у объекта event нет ни свойства toElement, ни relatedTarget.

Deff 27.06.2012 18:19

focusOu - не наю такого - есть blur
http://jquery-docs.ru/Events/blur/#fn

devote 27.06.2012 18:37

Ну если только тупо перехватывать все что можно в документе:
<input class="first_input" type="text" value="first_input" />
<input class="second_input" type="text" value="second_input" />
<input class="last_input" type="text" value="last_input" />

<script>
    var focusTarget, els = document.getElementsByTagName('input');

    for( var el, i = 0 ; el = els[ i++ ]; ) {
        el.addEventListener( "blur", function( e ) {
           alert( "Уходим с элемента: "+e.target.className+
                   " и Перешли на элемент: " + ( focusTarget && focusTarget.className ) );
        }, true);
    }

    document.onmousedown =
    document.onkeydown =
    document.onkeypress =
    document.onfocus = function( e ) {
       focusTarget = e.target;
    }
</script>

devote 27.06.2012 18:45

хотя это решение тоже не работает должным образом, если переходить по элементам нажимая клавишу TAB

see613 27.06.2012 19:12

to Deff: http://api.jquery.com/focusout

see613 27.06.2012 19:14

to devote: мне этого вполне хватит, единственное - onclick выполняется после blur, а mousedown перед(и он мне подходит), но всегда ли так?
Имеется ввиду, что из твоего списка событий мне не нужны кнопки, хватит только мыши(и нагружать комп не надо событиями, соответственно onfocus тоже ненужен), но всегда ли и везде ли(браузеры) mousedown выполняется до blur, это вопрос. А точнее даже не blur, а http://api.jquery.com/focusout. Потому что он позволяет всплывать событию, а мне это требуется.

devote 27.06.2012 19:17

Цитата:

Сообщение от see613
но всегда ли так?

сложно сказать, не тестил если честно.

see613 27.06.2012 19:33

как тебе такая замарочка?
когда вызывается blur, мы вызываем клик (jquery: $.trigger("click.мой_namespace")).
а у клика уже есть target.
В итоге мы следим за blur и кликом, поставленным на нужный элемент, и вроде ресурсы не расходуются впустую.

devote 27.06.2012 19:43

Цитата:

Сообщение от see613
и вроде ресурсы не расходуются впустую.

ну вполне нормально можно и так конечно сделать.


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