2010-04-06 4 views
2

Ceci est mon premier post alors laissez-moi savoir si vous souhaitez plus d'informations!jQuery Accordéon Focus

J'utilise une liste de sélection et un accordéon jQuery. Lorsque l'utilisateur sélectionne une valeur dans la liste, il ouvre la partie correspondante de l'accordéon en utilisant la méthode activate.

Cela fonctionne bien indépendamment de ce qui focalise la fenêtre sur l'accordéon plutôt que de laisser l'utilisateur au même endroit.

Est-ce que quelqu'un sait comment éviter cela?

Répondre

2

Vous pouvez stocker l'élément actif et restaurer le focus après que l'utilisateur a cliqué sur l'en-tête accordéon.

Vous pouvez récupérer l'élément actuellement focalisé en utilisant le code suivant:

function onElementFocused(e) 
{ 
    if (e && e.target) 
     document.activeElement = 
     e.target == document ? null : e.target; 
} 

if (document.addEventListener) 
    document.addEventListener("focus", onElementFocused, true); 

Cela permet de garder l'élément actuellement concentré dans la variable document.activeElement. En utilisant l'événement 'changestart' et/ou 'change avec l'accordéon, vous pouvez restaurer le focus sur l'élément désiré à chaque changement d'accordéon.

Vous devrez peut-être ajouter une clause ou deux pour empêcher la définition des divs d'en-tête accordéon en tant qu'élément actif en cours dans le code ci-dessus, sinon vous ne restaurerez que l'en-tête accordéon.

Le code ci-dessus n'est pas testé, comme c'est l'idée, mais il devrait fonctionner je crois.