Gardez le choix de la liste sélectionnée après rafraîchissement

J'ai le code suivant qui redirige la page (onchange) en fonction de la valeur du choix de l'option. Par exemple, nous sommes dans index.php. Il existe une liste de sélection et si l'utilisateur choisit Design qui a la valeur «un», la page redirigée sera la même page mais avec une URL différente (index.php & one)

Mon objectif est d'avoir l'option sélectionnée, sélectionnée après la redirection / actualisation.

Voici mon code

<select size="1" name="Products" onchange="if(this.options.selectedIndex>0) window.location.href = 'index.php&'+this.options [this.options.selectedIndex].value"> <option value="">Please Select a Product</option> <option value="one">Design Software</option> <option value="two">Manufacturing Software</option> <option value="three">Machine Tools</option> </select> 

Merci pour votre temps

Une solution avec javascript et jQuery framework:

 $(document).ready(function(){ var option = gup('option'); $("select option[value='"+option+"']").attr('selected','selected'); }); function gup( name ) { name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regexS = "[\\?&]"+name+"=([^&#]*)"; var regex = new RegExp( regexS ); var results = regex.exec( window.location.href ); if( results == null ) return ""; else return results[1]; } 

Gardez à l'esprit que vous devez changer le & to ? Et définir un paramètre et une valeur. option=one like option=one .

Le javascript correspondant doit donc changer:

 onchange="if(this.options.selectedIndex>0) window.location.href = 'index.php?=option'+this.options [this.options.selectedIndex].value"> 

Demo: http://lb.vg/969f6

Stockez les données dans les cookies lors du changement et rechargez lorsque la page (ou une autre page) est chargée

Vous devrez passer la variable avec la redirection. Ensuite, retirez-le de la variable $ _GET et vérifiez si la valeur est définie lors de la création du choix.

 <?php $menu_option = $_GET['product']; ?> <select size="1" name="Products" onchange="if(this.options.selectedIndex>0) window.location.href = 'index.php?product='+this.options [this.options.selectedIndex].value"> <option value="">Please Select a Product</option> <option value="one"<?php if ('one' == $menu_option) { echo ' selected="selected"; } ?>>Design Software</option> <option value="two"<?php if ('two' == $menu_option) { echo ' selected="selected"; } ?>>Manufacturing Software</option> <option value="three"<?php if ('three' == $menu_option) { echo ' selected="selected"; } ?>>Machine Tools</option> </select> 

https://github.com/paulschreiber/misc/blob/master/php/popup_menu.php

J'ai une fonction qui gère cela. La version sur github est un peu vieillotte, mais devrait toujours fonctionner.

 $productList = array ( "one" => "Design Software" "two" => "Manufacturing Software" "three" => "Machine Tools" ); $js = "onchange=\"if(this.options.selectedIndex>0) window.location.href = 'index.php?Products='+this.options[this.options.selectedIndex].value\""; print popup_menu("Products", $productList, $js); 
 <?php $selected = 0; if(isset($_GET['Products'])) $selected = $_GET['Products']; ?> <select size="1" name="Products" onchange="if(this.options.selectedIndex>0) window.location.href = 'index.php?Products='+this.options[this.options.selectedIndex].value"> <option value="">Please Select a Product</option> <option value="one" <?php echo ('one' == $selected) ? 'selected="selected"' : '';?> >Design Software</option> <option value="two" <?php echo ('two' == $selected) ? 'selected="selected"' : '';?>>Manufacturing Software</option> <option value="three" <?php echo ('three' == $selected) ? 'selected="selected"' : '';?>>Machine Tools</option> 

Replace onchange avec celui-ci: onchange = "if (this.options.selectedIndex> 0) window.location.href = 'index.php? Pro =' + this.options [this.options.selectedIndex] .value">