Bonjour, je souhaite créer un formulaire aux nombres de champs variables, après un travail de recherche j'obtiens ceci :
DU point de vue utilisateur je voudrais qu'on puisse remplir entre 1-50 champs (de façon dynamique), les supprimer, puis après validation (je vais check les données) pouvoir modifier, ajouter ou supprimer des champs puis re-valider (re-check..) jusqu'au clic sur un bouton envoyer.
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 <html> <head> <title>Utilisation du dom</title> <script type="text/javascript"> var compteur = 0; function ajouter(value){ // On récupère le fieldset var conteneur = document.getElementById('fichiers'); /** * Création des éléments dont on a besoin : * Un div dans lequel on mettra notre champ file et une case à cocher * qui nous servira à enlever ensuite le div. * * En utilisant un div ça sera plus facile car sinon * on aurais du enlever le champ file et la case à cocher séparément. */ var undiv = document.createElement('div'); var fich = document.createElement('input'); var check = document.createElement('input'); fich.name = 'mesfichiers_'+compteur; fich.type = 'text'; fich.value = value; //valeur par defaut dans les champs check.type = 'checkbox'; // On enlève sur le click de la checkbox check.onclick = function(){ // Elément à enlever lediv = this.parentNode; // Elément auquel on enlève lefieldset = lediv.parentNode; // On enlève ! lefieldset.removeChild(lediv); } /** * Ajout des éléments au div grace a appendChild * qui ajoute à la fin. * On utilise aussi createTextNode pour ajouter du texte apres la case */ undiv.appendChild(fich); undiv.appendChild(check); undiv.appendChild(document.createTextNode("Supp")); // Ajout du div : conteneur.appendChild(undiv); compteur++; document.getElementById('hidden_field').value = compteur; } function init(){ //onsubmit="init()" // var compteur = <?php if (isset($_POST['compteur'])) {echo $_POST['compteur'];} else {echo "0";}?>; // alert(compteur); /*var compteur = <?php if (isset($_POST['compteur'])){echo $_POST['compteur'];} else { echo "0"; }?>; <?php $cpt = 0; ?> for (var i = 0; i < compteur ; i++){ //ajouter(<?php echo $_POST['mesfichiers_'.$cpt]; ?>); alert(compteur); <?php $cpt++; ?> }*/ } </script> </head> <body> <form action='./nous-contacter' method='post' enctype='multipart/form-data' > <fieldset id='fichiers'> <legend>Fichiers</legend> <?php if(isset($_POST['compteur'])){ for($i=0;$i<$_POST['compteur'];$i++){ //appeler la fonction JS avec comme parametre les valeurs des fichiers déjà passé en post (mesfichiers_0, mesfichiers_1...) } } ?> <input type='button' value='Ajouter un fichier' onclick='ajouter("")' /><br /> <input type="hidden" name="compteur" value="0" id="hidden_field" /> </fieldset> <input id="bouton_envoyer" type="submit" value="Envoyer" /> </form> </body> </html>
Merci pour votre aide !
Alan
Partager