2017-05-12 4 views
0

je code suivant dans mon fichier de vue:Affichage et widget de se cacher dans l'ordre croissant

<?php for ($x = 1; $x <= 5; $x++) { 
    echo $this->widget('application.components.FileUploadWidget',array(
    'model'=>$model, 
    'attribute'=>'f__10_'.$x, 

    'htmlOptions'=>array('class'=>'form-control') 
),true); 

} 

?> 


<div class="form-group"> 
    <div class="col-xs-12 col-sm-2 pull-right" style=""> 
     <button id="adding" href="#" rel=".copy" class="pull-right add-item btn btn-success" type="button""> 
     <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>Add</button> 
    </div> 
</div> 
<div class="form-group"> 
    <div class="col-xs-12 col-sm-2 pull-right" style=""> 
     <button id="remove" href="#" rel=".copy" class="pull-right add-item btn btn-danger" type="button""> 
     <span class="glyphicon glyphicon-minus" aria-hidden="true"></span></button> 
    </div> 
</div> 

Et je suit le code JavaScript:

<script> 
    $(document).ready(function(){ 
     $("#Form_f__10_1, #Form_f__10_2, #Form_f__10_3, #Form_f__10_4, #Form_f__10_5").hide(); 

     $("#remove").click(function(){ 
      $("#Form_f__10_1").hide(); 
     }); 
     $("#adding").click(function(){ 
      $("#Form_f__10_1").show(); 
     }); 
    }); 

</script> 

(code JavaScript est incomplet). Lorsque l'utilisateur appuie sur le bouton ajouter, il doit afficher le widget dont l'attribut est égal à f__10_1. Si un utilisateur appuie de nouveau sur le bouton ajouter, il devrait afficher le widget dont l'attribut est égal à f__10_2. etc. Ce processus devrait être fait jusqu'à ce que l'attribut du widget soit égal à f__10_5. Comment puis-je le faire en JavaScript?

+0

alors exactement comment voulez-vous que le code fonctionne? –

+0

Créez vous-même une variable où vous fournissez le formulaire courant ('current =" Form_f__10_1 "') sous forme de chaîne puis dans les deux fonctions "#remove" et "#adding" remplacez le dernier caractère de cette chaîne par le nombre approprié. (Je ne parle pas php, alors quelqu'un d'autre a besoin de coder cela pour vous;)) – CFrei

Répondre

0

Vous devez utiliser un mécanisme de "pile". Stockez le nombre de widgets affichés dans un compteur (globalement joignable), par exemple widget_counter. Voici comment cela devrait fonctionner:

  1. 'Ajouter' pressé -> widget_counter ++ et montrer l'élément
  2. 'Ajouter' pressé -> widget_counter ++ et montrer l'élément
  3. 'Supprimer' pressé -> widget_counter-- eT masquer l'élément
  4. et ainsi de suite ...

Si 5 ou 0 est atteinte, ne font rien. Vous pouvez obtenir le widget réel (= dernier) affiché à partir de la variable de compteur et vous pouvez créer le nom de l'élément suivant à partir de cette variable.