2010-01-27 4 views
2

Comment puis-je obtenir l'index actif du volet accordéon de jquery quand on clique sur un bouton? Ce que je veux faire, c'est quand un bouton est cliqué dans le volet 3 par exemple, je veux stocker cette valeur et quand la page est rechargée, je veux que le volet 3 reste ouvert.Récupère l'index actif du volet accordéon jquery d'asp.net sur le serveur?

J'ai d'abord eu ceci dans mon côté de clic de serveur et quand je code dur une valeur pour paneIndex cela fonctionne bien, mais évidemment, je ne veux pas faire ceci, je veux obtenir l'index sur le clic et passe ça au script.

string script = "<script type=\"text/javascript\">var paneIndex = " + 3 + "</script>"; 

if(!ClientScript.IsStartupScriptRegistered("JSScript")) 
    ClientScript.RegisterStartupScript(this.GetType(),"JSScript", script); 

Répondre

1

Vous pouvez stocker la valeur dans un champ de formulaire caché, et en supposant que vous faites une publication, cette information maintenant dans le champ caché pour vous d'utiliser sur le côté serveur.

+0

Pouvez-vous donner un exemple en faisant cela avec le volet accordéon? – Xaisoft

+0

Je ne suis pas un jquery, mais quelqu'un d'autre a déjà démontré comment accomplir cela. En utilisant leur exemple (Brida Batchelder), tout ce que vous devez faire côté serveur est la référence Request.Form ['myHiddenInputName'] – Morcalavin

0

Vous voudrez lier une fonction à l'événement change de l'accordéon, et stocker le nouvel index actif dans une entrée cachée afin qu'il soit renvoyé au serveur.

En ce qui concerne le retour de l'index actif vers le code HTML renvoyé par le serveur, votre approche est correcte. Évidemment, au lieu de la valeur codée en dur de 3, vous devez entrer la valeur de l'entrée cachée.

$("#accordion").accordion({ 
    active:1, 
    change: function(event, ui) { 
     var activeIndex = $("#accordion").accordion('option','active'); 
     $("myHiddenInputId").val(activeIndex); 
     //alert(activeIndex); 
    } 
}); 

Du côté du serveur, vous pouvez accéder à la valeur et poussez-le revenir à la page de la même manière que vous avez publié dans la question:

string activeIndex = Request.Form["myHiddenInputName"]; 
string script = string.Format(@"<script type=""text/javascript"">var paneIndex = {0};</script>", activeIndex); 

Cela devrait le faire.

+0

Comment puis-je obtenir la valeur de l'index actif à stocker dans myHiddenInputId du côté serveur? – Xaisoft

0

Il est également possible d'utiliser le plugin jquery.cookie et de stocker l'index de volet actif dans un cookie. De cette façon, tout se passe réellement du côté des clients. Je ne sais pas si cela pourrait être une réponse valide, en la jetant simplement ici pour des raisons d'exhaustivité: D