2010-10-05 10 views
3

A partir d'un panneau d'accordéon, je poste des données, puis recharge la page. Je voudrais que le rechargement du panneau actuel soit ouvert et concentré sur l'écran plutôt que de rouvrir le premier panneau et de me ramener en haut de l'écran. Je sais quel panneau je veux ouvrir, donc je n'ai pas besoin de code pour comprendre le panneau, juste comment l'afficher.Lors du rechargement de page, ouvrez un panneau d'accordéon spécifique

$.post('<%= ResolveUrl("~/Contract/AddContractLocation") %>', $(form).serialize(), function (data) { 
     if (data.Result == "success") { 
       ... yada yada... 
       window.location.reload(); 
     } 

Modifier à ajouter:

Voilà comment j'initialiser l'accordéon:

$("#acc").accordion({ 
     autoHeight: false, 
     navigation: true 
}); 

Ceci est la structure de base:

<fieldset> 
    <legend>Contract</legend> 

    <div id="acc"> 
     <h3><a href="#contractinfo">Contract Info</a></h3> 
     <div> 
      stuff 
     </div> 
     <h3><a href="#locationandrs">Locations and Ratesheets</a></h3> 
     <div> 
      stuff 
     </div> 
     <h3><a href="#auditibleterms">Auditable Terms</a></h3> 
     <div> 
      stuff 
     </div> 
     <h3><a href="#contractdocs">Contract Docs</a></h3> 
     <div> 
      stuff 
     </div> 
    </div> 
</fieldset> 

Répondre

3

La première fois que j'ai fait ce code dans environ un an, et pendant que je travaillais sur quelque chose d'autre, j'ai pu comprendre cela.

var substr = window.location.href.split('#'); 
window.location.href = substr[0] + "#locationandrs"; 
window.location.reload(); 
1

Pouvez-vous définir la active option à true sur la valeur renvoyée? Vous devez cliquer sur 'options' à partir du lien, mais voici les docs:

Sélecteur pour l'élément actif. Définissez sur false pour n'en afficher aucun au démarrage. Besoin repliable: vrai. Exemples de code

Initialiser un accordéon avec l'option active spécifiée.

$(".selector").accordion({ active: 2 }); 

obtenir ou définir l'option active, après initialisation.

//getter 
var active = $(".selector").accordion("option", "active"); 
//setter 
$(".selector").accordion("option", "active", 2); 
+0

Si je le configure juste avant mon rechargement, il se recharge quand le premier panneau est ouvert. – RememberME

+0

hmm. pouvez-vous poster du code? – orolo

+0

J'ai ajouté '$ (" # acc "). Accordéion (" option "," active ", 3);' avant le 'window.location.reload();' – RememberME

0

Sur présentation sous forme envoyer paramètre caché, identifiant panneau ouvert. Vous obtenez ce paramètre et en l'utilisant, attribuez un ID spécial au panneau approprié lors de la sortie du code HTML. Puis init accordéon en js-script:

$('#accordion').accordion({ 
    ... 
    ,active: '#panel_selected' 
    ... 
}); 
$('#panel_selected').get(0).scrollIntoView(false); // scroll until panel is visible 

C'est tout!