2010-03-18 6 views
1

J'ai écrit une liste déroulante en cascade à l'aide de JQuery. Le code que j'ai écrit fonctionne; la liste en cascade, lorsqu'elle est modifiée, met à jour la liste en cascade. MAIS lorsque je quitte la page et que j'appuie sur le bouton de retour du navigateur, la liste déroulante CASCADED perd ses valeurs. Voici mon code (la liste des catégories renseigne la liste des produits lorsqu'ils sont modifiés):JQuery: la liste déroulante en cascade perd des valeurs lorsque vous appuyez sur le bouton Précédent

<select id="CategoryList" onchange="CategoryList_OnChange()"> 
    <option value="" selected="selected"></option> 
    <option value="1" selected="selected">Food</option> 
    <option value="2" selected="selected">Toys</option> 
    <option value="3" selected="selected">Books</option> 
</select> 

<select id="ProductList"></select> 

<script src="../../Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> 

<script type="text/javascript"> 
    function CategoryList_OnChange() { 
     var selected = $('#CategoryList').val(); 
     if (selected != null && selected != '') { 
      $.getJSON('SelectList/ProductList/' + selected, function(selectList) { 
       $('#ProductList option').remove(); 
       $.each(selectList, function(index, value) { 
        $('#ProductList').append("<option value='" + value.Value + "'>" + value.Text + "</option>"); 
       }); 
      }); 
     }   
    } 
</script> 

Est-il possible de garder la population ProductList même lorsque vous naviguez hors de la page? Ma compréhension du fonctionnement des navigateurs est qu'ils sont destinés à conserver l'état de la page, même lors de la navigation.

Je sais que je pourrais simplement le code mis en

$(document).ready(function() { ... }); 

qui appellera explicitement la méthode onchange mais cela présente l'inconvénient de faire un appel sur le site alors que je veux la page de maintenir EXISTANT Etat.

Aidez-nous!

Répondre

2

Pourquoi un navigateur devrait-il conserver l'état résultant de la manipulation de js? La plupart des navigateurs ne le feront pas.

Vous pouvez essayer d'utiliser le cookies library et enregistrer la catégorie (le cas échéant) sélectionnée. Lorsque l'utilisateur revient plus tard à la page et n'a pas effacé les cookies entre-temps, vous pouvez lire la valeur à partir du cookie et émettre automatiquement la demande $.getJSON pour "recharger" la liste de produits

+0

Merci. Bien que je doive trouver une implémentation, c'est l'information que je cherchais. Puisque les navigateurs (généralement) ne conservent pas l'état résultant de la manipulation de JS, je vais essayer de contourner ce problème. –

Questions connexes