Bonjour,

j'ai un tableau de donnée que j'affiche en php avec une boucle foreach. lors de l'affichaque de chaque enregistremen, j'affiche un boutton et des champs cahé contenant des valeurs,

mon soucis est que je veus que lorsque l'utilisateur click sur un bouton, que la valeurs du champ cache pour ce bouton soit aussi récupéré voici jusqu'ici ce que je fais

Ce que je fais

        <table class="table table-hover"><tr><td>#</td><td>Date de Passage</td><td>Opération</td></tr>
                                <?php $j = 1;?>
                               <?php  foreach ($campagne['Passage'] as $cle => $passage): ?>
                                 <tr>
                                    <td><?php echo $j++; ?></td>
                                    <td width="40%"><?php echo $passage['temppassage']; ?></td>

                                    <td>

                                     <input type="hidden", class= "idp" , value=<?php echo $passage['id'];?>>
                                     <input type="hidden", class= "datepropose" , value=<?php echo $passage['temppassage'];?>>  

                                     <div class="tempdepassage">
                                        <?php echo $passage['temppassage'];?>
                                     </div>
                                      <?php echo $this->Html->link(' ', array('idpassage' => $passage['id']),array('class'=> 'btn btn-info btn-xs fa fa-exchange passagebutton','title'=>'Proposer un passage','data-target' => '#modal-responsive','data-toggle' => 'modal'));?>

                                      <?php echo $this->Html->link(' ',array('admin' => true,'controller' => 'Campagnes','action' => 'validationcampagne',$campagne['Parametrecampagne']['id']),array('class'=> 'btn btn-success btn-xs fa fa-check-circle','title'=>'Valider ce passage')); ?>

                                    </td>
                                  </tr>
                                <?php endforeach;?> 
                                <?php unset($passage); ?>
                    </table>

et dans mon fichier js je fait ceci

  $('.idpassage').hide();
  $('.tempdepassage').hide();
  $(function()
  {

     $('.passagebutton').on('click',function(event){
      var idp = $('.idp').val();
      //var sol = $(this).find('');
      var datepro = $('.datepropose').val();
      alert(datepro);

      $('.propositionclient').empty().html($('.datepropose').val()); 

        $.get('../detailscampagneclient',{id:idp},function(data)
            {

          }

);
     // document.location.href = idp; 

  }
  );
   });

Ce que je veux

récupéré la valeur exact des champs cachés de l'élement sur lequel j'ai clické

Ce que j'obtiens

j'obtient just la valeur du premier élement

suis pas trop pro en jquery ou javascript quelqu'un a une idée? SVP

3 réponses


romses
Auteur
Réponse acceptée

merci m'ai j'ai trouvé il fallait juste ajouter un attribut id directement dans le lien eyant comme valeur

<?php echo $this->Html->link(' ',array('id' => $passage['id'],'class'=> 'btn btn-info btn-xs fa fa-exchange passagebutton','title'=>'Proposer un passage','data-target' => '#modal-responsive','data-toggle' => 'modal'));?>

et dans le jquery faire just

var idp = $(this).attr('id');

merci pour ta réponse balo

Tu utilises le sélecteur ".datepropose" avec jQuery pour récupérer la valeur du champs. Tu en as plusieurs sur ta page, donc il prend la valeur du premier.

Deux solutions :

  • Tu mets des id unique sur tes champs caché et tu les sélectionnes avec jQuery
  • Tu sélectionnes le champ caché en signifiant qu'il est frère du lien sur lequel tu as cliqué en utilisant la fonction "siblings" :
 var datepro = $(this).siblings('.datepropose').val();

"This" correspond au lien cliqué puis on cherche les frères qui ont la classe "datepropose".

romses
Auteur

merci m'ai j'ai trouvé il fallait juste ajouter un attribut id directement dans le lien eyant comme valeur

<?php echo $this->Html->link(' ',array('id' => $passage['id'],'class'=> 'btn btn-info btn-xs fa fa-exchange passagebutton','title'=>'Proposer un passage','data-target' => '#modal-responsive','data-toggle' => 'modal'));?>

et dans le jquery faire just

var idp = $(this).attr('id');

merci pour ta réponse balo