фокусировка, но только если она не сфокусирована на другом элементе - PullRequest
1 голос
/ 27 января 2011

У меня есть следующий 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 ]

1 голос
/ 27 января 2011

Этот вопрос говорит о том, как определить, имеет ли элемент фокус: Использование jQuery для проверки, имеет ли фокус ввода

Тогда все, что вам нужно сделать, это:

$("#Button1").focusout(function () {
    if (!$("#divCompany1").is(":focus")) {
        $("#divCompany1").slideUp("fast");
    }
});
0 голосов
/ 27 января 2011

Хорошо, я, кажется, решил это:

$("#Button1").click(function () {
        $("#divCompany1").slideToggle("fast");
        $("#<%=lstBoxCompany.ClientID%>").focus();
    });

    $("#divCompany1").focusout(function () {
        $("#divCompany1").slideUp("fast");
    });

Вместо того, чтобы беспокоиться о фокусировке для Button1 Я просто установил фокус на элемент, к которому хотел перейти пользователь (divCompany1), и только после того, как этот фокус исчез, я скрыл его.

Работает как задумано.

...