Select liste lié et selected avec JQuery

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Select liste lié et selected avec JQuery

Re: Select liste lié et selected avec JQuery

par Maz » 28 oct. 2016, 18:11

Salut j'avais le même problème que toi mais ce tuto m'a aider. Il est très explicite.

Lien: http://blog.infiniclick.fr/articles/tut ... query.html

Re: Select liste lié et selected avec JQuery

par Nours312 » 14 janv. 2010, 00:42

donc ... reprenons !...

Javascript est un langage client il est utile pour effectuer des opération une fois que la page est chargée.
Php étant un langage serveur, il est utile pour générer la page.

Mais l'un ne peux remplacer l'autre (ni inversement) sinon, ils ne pourraient apporter le même service à l'utilisateur.

Dans ton cas, je penses que le plus profitable serait de les faire cohabiter :

1. lors du remplissage par l'internaute du formulaire, tu utilise le javascript pour incrémenter les selects avec les choix qui s'offrent à l'utilisateur en plaçant des events sur les onChange.
2. lors de l'envoi du formulaire au serveur par l'utilisateur, PHP Ayant les valeurs à tout à fait la possibilité de pré-incrémenter les selects avec les choix sélectionnés précédemment.

3. Si l'internaute souhaite rafraichir sa page (volontairement ou involontairement) lors du remplissage du formulaire et que tu souhaites lui éviter de re-sélectionner tous les selects précédemment choisis, tu dois utiliser une fonction Ajax (Javascript) qui va informer le serveur de chaque choix de l'utilisateur au fur et à mesure que celui-ci avance dans le formulaire (toujours sur les onChange), ainsi, si l'internaute rafraichi le formulaire, le serveur ayant les valeur choisis (en session), il peux directement pré-remplir le formulaire (comme dans le 2.) ...

4. en Optant pour une validation des choix en Ajax, tu peux étendre ta fonction au fait de recueillir (en ajax toujours) les valeurs à incrémenter dans le prochain select (ça t'évitera de blinder le Javascript avec tous les choix possibles et inimaginables) ...


... enfin, c'est comme ça que je comprends ton besoin ... mais je peux me tromper !...

Re: Select liste lié et selected avec JQuery

par hi-logik » 13 janv. 2010, 22:58

Très franchement j'y comprend rien !

pourrais tu toi aussi être plus claire dans ton explication stp ?

Je veux le faire en Ajax. habituellement quand je dis que je veux le faire en javascript on me dit utilise plutôt une bibliothèque et quand j'en utilise une je suis pas plus avancé à
croire que personne n'a rencontré mon problème(en recherchant sur le web pas d'astuce la dessus)

j'ai juste plusieurs liste chainé avec pays, régions, département, ville !

J'avais réussi à le faire avec javascript mais j'ai pas réussi à garder le selected des listes après rafraichissement.
Et je veux pas le faire en php pur c'est pas aussi efficace...

Bref je suis pas un bon avec javascript ce language me soul et je suis obligé de l'utilisé.

Merci

Re: Select liste lié et selected avec JQuery

par Nours312 » 07 janv. 2010, 22:45

pour le faire au chargement de la page .... fais le en php !... :D

Si la session contient une valeur, ... ben tu place " selected='selected' " dans l'option en question !...

@+

Re: Select liste lié et selected avec JQuery

par hi-logik » 07 janv. 2010, 17:54

ok je te remercie pour cette réponse !

Alors j'opte pour le choix de la session.
En revanche dit moi si j'ai bien compris parce que la je visualise pas encore bien le truc lol

donc quand l'utilisateur submit le formulaire à la récupération des valeurs dans mon fichier php
je met donc en session les valeurs de mes selects en vérifiant qu'il ne sont pas déjà en session ?

Ensuite c'est la que je sais pas trop comment faire !
mais je ne sais pas comment réassigné d'office sans cliqué mes valeurs stocké en session avec JQuery puisque
ça ce fais avec le onchange ! donc il fraudais que je trouve un truc pour le faire au chargement de la page.

Merci ++

Re: Select liste lié et selected avec JQuery

par Nours312 » 06 janv. 2010, 15:48

salut :

Si tu parles, du rafraichissement (F5) de la page, le seul moyen serait de mettre en session la valeur de tes selects lors de la requete Ajax (si celle-ci est effectuée) ... et réutiliser ses données lors de la constitution de ta page en php ... ou l'injection d'un coockie en Javascript lors de la modification du select ... puis son réutilisation soit en JS soit en php ....

sinon ... essaye de mieux décrire ton besion .. @+

Select liste lié et selected avec JQuery

par hi-logik » 06 janv. 2010, 13:46

Bonjour à tous !

Je n'ai pas trouvé de solution pour garder le selected des selects lié après rafraichissement.
Si une personne rempli tous les champs et qu'il à une erreur la personne devras à chaque fois refaire le select des regions etc

Voici mon code :

Code : Tout sélectionner

$(document).ready(function() { $("#reg").css("display", "none"); $("#country").change(function() { var val = $('select#country option:selected').val(); $.ajax({ type : "GET", url: "/Ajax/getRegion/" + val, dataType: "xml", success: function(xml) { $(xml).find('element').each ( function() { var option = $(this).find('option').text(); var value = $(this).find('value').text(); $("#region").append("<option value='"+ value +"'>"+ option +"</option>"); } ); $("#reg").fadeIn(200); } }); }); });

Code : Tout sélectionner

<p> <label for="countries"><?php echo $translate->formLabel->country; ?> :</label> <select name="country" id="country"> <option value="-1"><?php echo $translate->formValue->selectCountry; ?></option> <?php foreach($location->getCountries() as $country) { $selected = ($reg == $country['id_country']) ? ' selected=selected' : ''; echo '<option value="'.$country['id_country'].'"'.$selected.'>'.utf8_encode($country['fr']).'</option>'; } ?> </select> </p> <p id="reg"> <label for="regions">Region : </label> <span id="regions"> <select name="region" id="region"> <option value="-1">Selectionner un pays</option> </select> </span> </p>

Code : Tout sélectionner

public function getRegion() { if(isset($_GET['id']) && is_numeric($_GET['id'])) { $location = new LocationModel(); $this->addVar('idName', 'id'); $this->addVar('nameType', 'region'); $this->addVar('loc', $location->getRegions(67)); $this->XMLRender('location'); } }
Voila si quelqu'un connait la réponse je serais ravi de la connaitre :)