фокусировка, но только если не сосредоточиться на другом элементе

StackOverflow https://stackoverflow.com/questions/4815563

  •  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");
    }
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top