焦点但只有在没有专注于另一个元素的情况下

时间:2011-01-27 11:10:12

标签: jquery jquery-focusout

我有以下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在我不想发生任何事情的同时获得它

这基本上允许用户在没有divCompany1滑动的情况下进入Button1和divCompany1之间。

我已经搜索了一段时间而没有找到任何有用的东西,我认为可能需要一个旗帜或其他东西。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

此问题说明如何检测元素是否具有焦点:Using jQuery to test if an input has focus

然后您需要做的就是:

$("#Button1").focusout(function () {
    if (!$("#divCompany1").is(":focus")) {
        $("#divCompany1").slideUp("fast");
    }
});

答案 1 :(得分:0)

好吧我似乎已经解决了它:

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

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

而不是担心Button1的焦点,我只是将焦点设置为我想要用户去的元素(divCompany1),并且只有在这个焦点消失之后才隐藏它。

按预期工作。