1

私は次の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の間を移動できます。

しばらく調べてみましたが、何も役に立たなかったので、旗か何かが必要だと思います。

何か案は?

4

2 に答える 2

1

この質問は、要素にフォーカスがあるかどうかを検出する方法を示しています。jQueryを使用して入力にフォーカスがあるかどうかをテストします

次に、あなたがする必要があるのは:

$("#Button1").focusout(function () {
    if (!$("#divCompany1").is(":focus")) {
        $("#divCompany1").slideUp("fast");
    }
});
于 2011-01-27T11:14:46.240 に答える
0

さて、私はそれを解決したようです:

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

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

フォーカスアウトについて心配する代わりに、Button1ユーザーが移動したい要素(divCompany1)にフォーカスを設定するだけで、このフォーカスがなくなって初めて非表示になります。

意図したとおりに動作します。

于 2011-01-27T12:15:34.950 に答える