фокусировка, но только если не сосредоточиться на другом элементе
-
25-10-2019 - |
Вопрос
У меня есть следующий jQuery:
$(document).ready(function()
{
$("#Button1").click(function () {
$("#divCompany1").slideToggle("fast");
});
$("#Button1").focusout(function () {
$("#divCompany1").slideUp("fast");
});
$("#divCompany1").focusout(function () {
$("#divCompany1").slideUp("fast");
});
});
Ниже приведено описание того, что я хочу случиться:
- Если пользователь фокусируется на Button1, но затем теряет фокус, я хочу, чтобы DivCompany1 скользил
- Если пользователь фокусируется на DivCompany1, но затем теряет фокус, я хочу, чтобы DivCompany1 только скользил.
- Исключение из вышеизложенного - если Button1 теряет фокус, но DivCompany1 приобретает его одновременно, я хочу, чтобы ничего не произошло
Это в основном позволяет пользователю переходить между Button1 и DivCompany1 без скольжения DivCompany1.
Я искал некоторое время и не нашел ничего использования, я думаю, что есть, вероятно, необходимость в флаге или что -то в этом роде.
Любые идеи?
Решение 2
Хорошо, я, кажется, решил это:
$("#Button1").click(function () {
$("#divCompany1").slideToggle("fast");
$("#<%=lstBoxCompany.ClientID%>").focus();
});
$("#divCompany1").focusout(function () {
$("#divCompany1").slideUp("fast");
});
Вместо того, чтобы беспокоиться о фокусировании для Button1
Я просто установил фокус на элемент, на который хотел получить пользователь (divCompany1
) и только после того, как этот фокус ушел, я скрываю это.
Работает так, как предполагалось.
Другие советы
В этом вопросе говорится, как определить, есть ли у элемента фокус: Использование jQuery для проверки, сфокусируется ли вход
Тогда все, что вам нужно сделать, это:
$("#Button1").focusout(function () {
if (!$("#divCompany1").is(":focus")) {
$("#divCompany1").slideUp("fast");
}
});