Bonjour.
J'ai un formulaire et j'aimerai qu'une partie de ce formulaire puisse être dupliquée autant de fois que l'on veux lors de l'appuie sur un bouton.
Pour l'instant j'ai procédé en faisant un clone de la partie originale en remplaçant les id des div et inputs en les incrementant. Mais je me demande si c'est la meilleure façon de procéder.
Je clone comme ceci :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <!--==== FORM ASSEMBLAGE ORIGINALE ====--> <div id="assemblage0" class="newAssemblage"> <!--Affichage des erreurs--> <div class="error" id="error_Assemblage0"> <span id="error_Assemblage0_num"> </span> <span id="error_Assemblage0_number"> </span> </div> <p> <label>N° de lassemblage :</label> <input type="text" class="Assemblage0_num" name="numAssemblage[]" value="" onblur="verifNum(this)"/> <input type="text" class="Assemblage0_number" name="enrInitial[]" value="" onblur="verifNumbers(this)"/> </p> <p> </div> <!--==== FORM CLONES ASSEMBLAGES ====--> //Lors du clic sur le bonton pour ajouter, les clones apparaissent ici.
Pour ne pas que ce soit trop long j'ai raccourcie le code. Normalement il y a plus de span pour les erreurs et plus d'inputs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <script type="text/javascript" > var idAss=1; //fonction que j'appelle lors de l'appuie sur le bouton function addAss() { var $clone = $('#assemblage0').clone(true); $clone.attr("id","assemblage"+idAss); $clone.find('#error_Assemblage0').attr("id","error_Assemblage"+idAss); $clone.find('#error_Assemblage0_num').attr("id","error_Assemblage"+idAss+"_num"); $clone.find('#error_Assemblage0_number').attr("id","error_Assemblage"+idAss+"_number"); $clone.find('.Assemblage0_num').attr("class","Assemblage"+idAss+"_num"); $clone.find('.Assemblage0_number').attr("class","Assemblage"+idAss+"_number"); // On vide les erreurs et l'input cloné dans le cas où il y a une une erreur. $clone.find("span").text(""); // on vide les spans d'erreur $clone.find("input[type='text']").val(""); // on vide l'input $clone.find("input[type='text']").css( "backgroundColor", "" ); //on remet sa couleur de base à l'input $clone.appendTo($("#assemblages")); $clone.prepend('<button type="button" class="btnRemoveField"> - </button>'); idAss++; } </script>
Je trouve ça assez fastidieux de devoir changer tous les id et class casiment un à un mais je pense que c'est plus court que de tout refaire à partir de 0.
Mais est-ce que je peux continuer à procéder comme cela ou faut-il mieux créer mes input et mon affichage des erreur à partir de rien?
Merci.
Partager