Вход

Просмотр полной версии : как узнать что несколько элементов не в фокусе?


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
document.activeElement

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

PiExeL
16.04.2013, 12:48
век живи век учись коли не читал учебник)
И с прочитанным учебником учиться приходится. Всех учебников не прочитаешь.

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:
Ну и если подскажете как написать проще буду тоже очень рад.