Question

Je le jQuery suivant:

$(document).ready(function() 
{ 
    $("#Button1").click(function () {
        $("#divCompany1").slideToggle("fast");
    });

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

    $("#divCompany1").focusout(function () {

        $("#divCompany1").slideUp("fast");

    });

});

Ce qui suit est une description de ce que je veux arriver:

  • Si l'utilisateur se concentre sur Button1 mais perd alors je veux concentrer divCompany1 à la diapositive
  • Si l'utilisateur se concentre sur divCompany1 mais perd alors je veux concentrer divCompany1 glisser vers le haut uniquement
  • L'exception à ce qui précède est si Button1 perd le focus, mais les gains divCompany1 en même temps, je ne veux rien arriver

Cela permet essentiellement à l'utilisateur de passer entre Button1 et divCompany1 sans divCompany1 coulissant.

J'ai recherché un certain temps et rien trouvé d'utilisation, je pense Theres probablement besoin d'un drapeau ou quelque chose.

Toutes les idées?

Était-ce utile?

La solution 2

Ok je semble avoir résolu le problème:

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

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

Au lieu de se soucier de focusout pour Button1 je simplement mis l'accent sur l'élément que je voulais à l'utilisateur d'aller (divCompany1) et seulement après cette mise au point est allé faire je le cache.

fonctionne comme prévu.

Autres conseils

Cette question explique comment détecter si un élément a le focus: Utilisation de jQuery pour tester si une entrée a le focus

Ensuite, tout ce que vous devez faire est:

$("#Button1").focusout(function () {
    if (!$("#divCompany1").is(":focus")) {
        $("#divCompany1").slideUp("fast");
    }
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top