Bonjour à tous,

Je me sens pas encore à l'aise avec Javascript voilà ce que j'ai:

<script>
                                     function showValue(val) {alert(val);}
                                     </script>

Voici mon champ select:

<span class="length">Taille <?php echo '<select name="length" id="lengths" onchange="showValue(this.value)">';
                                           if(is_array($this->lengths)){
                                            for($i=0;$i<1;$i++){
                                            echo '<option selected="selected" value="'.$this->lengths'0']->length.'">'.$this->lengths'0']->length.'</option>';
                                            unset($this->lengths'0']);}
                                           foreach($this->lengths as $v)
                                           {
                                             echo "<option value=\"$v->length\">$v->length</option>";
                                           }
                                         }
                                         else
                                         {
                                          echo '<option selected="selected" value="'.$this->lengths->length.'">'.$this->lengths->length->length.'</option>';
                                         }
                                           echo '</select>';
                                           ?></span>

Et voici une ancre:

<a href="<?php if($this->product->online ==1){echo Router::url('products/addpanier?id='.$this->product->id);}else{echo Router::url('products/'.$this->product->category);} ?>" class="addbasket">Ajouter au panier</a>

Je voudrai récupérer la valeur du champ sélectionner avec le alert je vois bien la valeur sélectionné et la passer dans l'ance pour avoir quelque chose du genre:

<a href="<?php if($this->product->online ==1){echo Router::url('products/addpanier?id='.$this->product->id.'&length='.val);}else{echo Router::url('products/'.$this->product->category);} ?>" class="addbasket">Ajouter au panier</a>

Ainsi je récupérerai la bonne valeur en GET mais je ne sais pas comment récupérer cette valeur justement... je voudrai en fait passer une taille dynamiquement à l'aide d'un select et comme je suis un peu une bille en javascript pour le moment.
Le script javascript ne contient rien car c'était un test pour simplement voir si je pouvais récupérer les valeurs et apparemment oui maintenant comment les traiter aucune idée.

2 réponses


2b3ez
Réponse acceptée

Pourquoi ne pas utiliser jQuery plutôt ?
Tu récupères la valeur de ton champ select avec la function change et tu créés ton lien directement en jQuery (avec la fonction append) en ajoutant l'attribut href (.attr) rempli avec ce que tu désires ;)

Xtr3me
Auteur
Réponse acceptée

Bon j'ai quelque chose qui fait ce que je lui demande mais j'ai bien trop mal au crâne pour corriger le problème qu'il me reste donc je verrai demain en attendant je vous poste ce que j'ai:

<script>
                                     $("select").change(function () {
                                     var value = $(this).val();
                                     $('a.addbasket').append(function(){
                                      var href = $(this).attr('href'); 
                                      $(this).attr('href',href + '&length=' +value);
                                     });
                                    })
                                     .change();
                                     </script>

En gros au changement de valeur sur le select (j'en ai qu'un sur la page), je récupère la valeur dans une variable nommée value puis ensuite je rajoute après l'attribut Href ma variable GET (length) et la valeur récupérée précédemment.
Le seul soucis qu'il me reste à régler c'est qu'à chaque changement le rajoute se fait sur l'ancien lien donc j'ai les length qui s'ajoutent à la suite si je le fait plusieurs fois.

Du genre:

http://blabla.com/products/addpanier?id=104&length=42&length=43&length=42

Ce qui est totalement normal puisque je le fait à chaque changement de valeur il faudrait que je stock la valeur de l'Href par défaut et que je lui rajoute toujours à celui ci la variable et que je ne prenne pas le nouveau lien crée.
En gros je dois simplement récupérer le lien Href en dehors de la fonction change ainsi je n'aurai pas de GET qui s'accumule.

Je verrai ça demain là je vais me coucher je tiens plus ;) .

Merci 2b3ez de m'avoir poussé à utiliser Jquery je me rends compte que les appréhensions que j'avais été inutile puisqu'il est très simple à utiliser.

Edit:
J'ai finalement réitérer et j'ai réussi voilà c'est bien ce que je disais :

<script>
                                     var href = $('a.addbasket').attr('href');
                                     $("select").change(function () {
                                     var value = $(this).val();
                                     $('a.addbasket').append(function(){ 
                                      $(this).attr('href',href + '&length=' +value);
                                     });
                                    })
                                     .change();
                                     </script>