salut j'utilise cakephp 2.7.1
j'ai un formulaire qui afiche un menu select et en fonction de l'élément sélectionner dans la vue, je génère un formulaire correspondant au nombre d'engistrement avec un champ de saisi par tuble de donnée.
mon soucis est que une fois généré lorsque l'utilisateur rempli les champs, j'aimerai faire un control javascript sur chaque champs. En effet je n'arrive pas à applicqué une action a un selecteur rien ne se passe voici ce que j'ai une action membre_addnote qui affiche le menu dont le code est ainsi:


<?php  

echo $this->set('title_for_layout','Remplissage des notes de classe');

?>

<div class="contenu-form">

    </div>

le formulaire affichant le menu est dans un element appelé zoneparametrage.ctp contenant le code suivant:


<?php  

echo $this->set('title_for_layout','Remplissage des notes de classe');

?>
<div class="panel panel-primary">
<div class="panel-heading">
    <h3 class="panel-title"><strong>
    Zone de parametrage </strong>(Vous devez obligatoirement sélectionnez le cycle pour avoir accèes à d'autres options ...)</h3>
  </div>
  <div class="panel-body">

<?php echo $this->Form->create('Note',array('class'=>'form-inline','id'=>'formstudent')); ?>

<div class="col-lg-12 col-md-12">

            <table class="panel">
            <tr>
                <td>
                    <div class="form-group">
                        <?php   

                            echo $this->Form->input('sequences_id', array('label' => 'Séquence','empty' => array('Choisir une Sequence'),'class'=>'form-control','options' => $listesequence));

                         ?>
                     </div>
                </td>
                <td>&nbsp;
                    <div class="form-group listclass">
                        <?php   

                            echo $this->Form->input('filieres_id', array('label' => 'Classe *','empty' => array('Choisir une Classe'),'class'=>'form-control ajaxliste ','data-target' => 'idmatiere','data-url' => array('action' => 'listematiere'),'id' => 'idfiliere','options' => $listclasse));

                         ?> 
                     </div>
                </td>
                <td>&nbsp;
                    <div class="form-group jsclass">
                            <?php   

                            echo $this->Form->input('matieres_id', array('label' => 'Matière *','class'=>'form-control classmatiere','id' => 'idmatiere'));

                             ?> 
                     </div>
                </td>

            </tr>
            </table>

</div>

  </div>

</div>

et enfin la vue généré lors de la selection d'un element du menu select . cette vue s'appele membre_index.ctp
et contenant le code suivant:

<div class="panel panel-primary">
<div class="panel-heading">
    <h3 class="panel-title">Liste des élèves de la classe : &nbsp;&nbsp;<span class="badge classestudent"> <?php echo $calsseAllstudent; ?></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span> Nombre Total d'élève 
    <span class="badge"><?php echo $nbre_eleve; ?></span></span></h3>
  </div>
  <div class="panel-body">
<?php echo $this->Form->create('Note',array('class'=>'form-inline','type' => 'get','url'=> array('action'=> 'addnote'))); ?>
    <td><?php $i = 1; ?></td>
            <table class="table table-bordered">
            <tr class="active">
                <td><strong>#</strong></td><td><strong>Nom</strong> </td><td><strong>Prénom</strong></td><td><strong>Note obtenu</strong></td>
            </tr>
            <?php   foreach ($listeeleve as $key => $eleve): ?>
                <tr>
                <td><?php echo $key +1 ; ?></td>
                <td><?php echo $eleve['Student']['nom']; ?></td>
                <td><?php echo $eleve['Student']['prenom']; ?></td>
                <td>
                <?php   

                            echo $this->Form->input('noteobtenu', array('label' => '','class'=>'form-control classmatiere noteeleve','type' => 'text','required' => true));

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

                <div class="line-input">
                                            <p >
                                                    <?php
                                                            echo $this->Form->button(' Sauvegarder', array('class'=>'btn btn-primary btn-submit glyphicon glyphicon-ok bt-submit-attribution btsendform','type' => 'submit','id' =>'sendform'));
                                                            echo $this->Form->button(' Annuler', array('type'=>'reset','class'=>'btn btn-default btn-reset glyphicon glyphicon-refresh')); 

                                                            echo $this->Form->end();

                                                    ?>
                                            </p>
                                            </div>

    <?php echo $this->Form->end();?>
  </div>
  <div class="panel-footer"></div>
</div>

dans mon fichier js, j'utilise ce code pour générer la vue dynamique :

$(function()
{

      $('.listclass').change(function()
      {

       var id = $('#idfiliere').val();

    $.get('index', {id}, function(data)

           {
             $('.contenu-form').empty().append(data);

           },'html'

             );
            return false; 

      }

    );
});

pour tester le fonctionement ou la selection d'un élément généré dynamique, j'utilise ce bout de bode :

$(function()

{
 $(document).on('click', '.btnsendform', function() {
    alert('ok');
});
}

  );

juste pour être sure que l'élement est bien sélectionné.

lors du click sur le bouton btnsendform, le controle required = true est executé mais pas le message ok de la fonction alert('ok'). j'aimerai savoir la cause de tout cela car je n'arrive a rien sélectionné du dom

1 réponse


romses
Auteur
Réponse acceptée

résolu mon problème il y'avait des balises non fermante qui blocquait le parscours des objets