Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как узнать что несколько элементов не в фокусе? (https://javascript.ru/forum/misc/37306-kak-uznat-chto-neskolko-ehlementov-ne-v-fokuse.html)

PiExeL 15.04.2013 10:25

как узнать что несколько элементов не в фокусе?
 
Есть <div> внутри него два элемента, как можно узнать что оба элемента внутри дива не в фокусе? На форме таких групп элементов несколько.

devote 15.04.2013 10:42

document.activeElement

PiExeL 15.04.2013 11:03

один из элементов - RadGrid, до него не достучаться через document.activeElement :(

megaupload 15.04.2013 15:43

RadGrid?

PiExeL 15.04.2013 22:10

да RadGrid (компонент Telerik) в нем отображается выборка из базы, условием для запроса к которой является текстовое поле, расположенное с гридом в одном диве. Собственно эти два компонента должны выполнять роль DropDownList'а за исключением того, что текстовое поле используется для поиска, туда же я переношу выбранное значение из грида. Смысл в том, чтобы скрыть грид тогда когда юзер кликнет (или перейдет табом) мимо него и мимо текстового поля.

megaupload 15.04.2013 22:27

Цитата:

Сообщение от devote
document.activeElement

век живи век учись коли не читал учебник)

PiExeL 16.04.2013 12:48

Цитата:

Сообщение от megaupload (Сообщение 246407)
век живи век учись коли не читал учебник)

И с прочитанным учебником учиться приходится. Всех учебников не прочитаешь.

PiExeL 26.04.2013 10:10

В общем, всё дело в том, что мне товарищ devote подсказал абсолютно правильно, нужно было просто чутка поковыряться. скрипт у меня выглядит следующим образом
function hidegrid(gridid, divgrid) {
                    if (document.activeElement.tagName == "TD") {
                        var x = document.activeElement.parentElement;
                        var y = x.parentElement
                        var z = y.parentElement;
                        if (z.parentElement.id != gridid) {
                            document.getElementById(divgrid).style.display = "none";
                        }
                    }
                    else {
                        document.getElementById(divgrid).style.display = "none";
                    }
                }

Я не претендую на самое изящное решение, но хотелось бы, чтобы работало в основных браузерах. В IE как это ни странно работает, а вот Chrome каждый раз активным считается элемент BODY, как с этим бороться? :help:
Ну и если подскажете как написать проще буду тоже очень рад.


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