Comment supprimer un formulaire crée
Résolu
MiWi86-33
Messages postés
142
Date d'inscription
Statut
Membre
Dernière intervention
-
MiWi86-33 Messages postés 142 Date d'inscription Statut Membre Dernière intervention -
MiWi86-33 Messages postés 142 Date d'inscription Statut Membre Dernière intervention -
Bonjour bonjour,
J'ai mon code
et avec mon bouton supprimer, j'aurais voulu pouvoir supprimer un formulaire que je viens de créer (avec la fonction ajout formulaire après avoir appuyer sur le bouton ajouter), je n'arrive pas à trouver de fonction delete, et visuellement, je trouve pas comment faire.
on m'avait donné l'idée :
seulement, quand je clique sur supprimer, celà me supprime TOUS les nouveaux formulaires, et ce n'est pas ce que je recherche
Si quelqu'un peut m'apporter de l'aide, ce serait avec grand plaisir.
Merci d'avance
J'ai mon code
<script type="text/Javascript"> function auto() { document.getElementById('formSelectAuto').style.display = 'block'; document.getElementById('formSelectAuto').style.visibility = 'visible'; document.getElementById('formSelectMan').style.display = 'none'; } function manuel() { document.getElementById('formSelectAuto').style.display = 'none'; document.getElementById('formSelectMan').style.display = 'block'; document.getElementById('formSelectMan').style.visibility = 'visible'; } function verif() { var expr = /^(((22[4-9]|23[0-9])\.)((25[0-4]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])\.)((25[0-4]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.)((25[0-4]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9]))$)/; var chaine = document.getElementById('adrMan').value ; if(!expr.exec(chaine)) { alert('adresse non valide : sélectionnez une adresse entre 224.0.1.0 et 239.254.254.254'); champ.focus(); } else {alert('adresse valide')} } function MPTS() { document.getElementById('ajt0').style.display = 'block'; document.getElementById('ajt0').style.visibility = 'visible'; document.getElementById('formulaires').style.visibility = 'visible'; document.getElementById('supr0').style.display = 'block'; document.getElementById('supr0').style.visibility = 'visible'; } function SPTS() { document.getElementById('ajt0').style.display = 'none'; document.getElementById('ajt0').style.visibility = 'hidden'; document.getElementById('formulaires').style.visibility = 'hidden'; document.getElementById('supr0').style.display = 'none'; document.getElementById('supr0').style.visibility = 'hidden'; } var nbFormulaires = 1 function AjouterFormulaire() { var formHTML = document.getElementById('formulaireReference').innerHTML; formHTML = formHTML.replace(/chaine0/g, 'chaine' + nbFormulaires); formHTML = formHTML.replace(/codage0/g, 'codage' + nbFormulaires); formHTML = formHTML.replace(/def0/g, 'def' + nbFormulaires); formHTML = formHTML.replace(/syst0/g, 'syst' + nbFormulaires); //formHTML = formHTML.replace(/supr0/g, 'supFormRef' + nbFormulaires); //formHTML = formHTML.replace(/ajout0/g, 'ajout' + nbFormulaires); //document.getElementById('supFormRef' ).style.visibility='visible'; document.getElementById('supr0' ).style.display='block'; document.getElementById('formulaires').innerHTML += formHTML; nbFormulaires++; } </script> <body> <form id="formInsert" name="formInsert" method="post" action=""> <div id="formListDeroul"> <label> <select name="listDerou" size="1" id="select" > <option value="select">------Selectionner------</option> <option value="auto" id="auto" onclick="auto()" >Auto</option> <option value="manuel" onclick="manuel()">Manuel</option> </select> </label> </div> <br /> <div id="formSelectAuto" style="display:none"> Permanent <input type="radio" name="selectAuto" value="permanent" class="OPTION" /> <br> Temporaire <input type="radio" name="selectAuto" value="temporaire" class="OPTION" /> <input name="adrAuto" type="text" id="adrAuto" value="<?php include("connect.php"); $ip = "224.0.1.0"; if(Connecter()) { $MonSQL= "SELECT * FROM information ORDER BY Multicast"; $CurseurMulticast = mysql_query($MonSQL); $UnMulticast = GetLigne($CurseurMulticast); while($UnMulticast) { $suivante = long2ip(ip2long($ip)+1); if($UnMulticast["Multicast"]==$ip) { $ip=$suivante; } $UnMulticast = GetLigne($CurseurMulticast); } echo $ip; //return $ip; }?>" size="30" /> <br /> </div> <div id="formSelectMan" style="display:none"> <input name="adrMan" type="text" id="adrMan" value="Entrez l'adresse" size="15" /> <input name="vue" type="button" value="Vérifier" onclick="verif()" /> </div> <br /> <label> Port <input name="port" type="text" id="port" value="" size="8" /> </label> <p> <LABEL>Type : </LABEL> MPTS <input type="radio" name="type" value="mpts" class="OPTION" onClick="javascript:MPTS()"/> SPTS <input type="radio" name="type" value="spts" class="OPTION" onClick="javascript:SPTS()"> <div id="formulaireReference"> <br><label> Chaine <input type="text" name="chaine0" size="20" id="chaine"/> </label> <br /> <LABEL>Codage : </LABEL> MPG4 <input type="radio" name="codage0" value="mpg4" class="OPTION" /> MPEG2 <input type="radio" name="codage0" value="mpeg2" class="OPTION" > <br /> <LABEL>Définition : </LABEL> SD <input type="radio" name="def0" value="SD" class="OPTION" /> HD <input type="radio" name="def0" value="HD" class="OPTION" > <br /> <LABEL>Systeme : </LABEL> PAL <input type="radio" name="syst0" value="PAL" class="OPTION" /> NTSC <input type="radio" name="syst0" value="NTSC" class="OPTION" > <br> </div> <div id="formulaires"></div> <input type="button" id="ajt0" name="ajout0" value="ajouter" style="display:none" onclick="javascript:AjouterFormulaire()" > <input type="button" id="supr0" name="supr0" value="Supprimer" style="display:none" > </form> <input type="submit" id="Soumettre" name="Soumettre" value="Soumettre" /> </body>
et avec mon bouton supprimer, j'aurais voulu pouvoir supprimer un formulaire que je viens de créer (avec la fonction ajout formulaire après avoir appuyer sur le bouton ajouter), je n'arrive pas à trouver de fonction delete, et visuellement, je trouve pas comment faire.
on m'avait donné l'idée :
<input type="button" id="supr0" name="supr0" value="Supprimer" style="display:none" onclick="document.getElementById('formulaires').innerHTML = ''" >
seulement, quand je clique sur supprimer, celà me supprime TOUS les nouveaux formulaires, et ce n'est pas ce que je recherche
Si quelqu'un peut m'apporter de l'aide, ce serait avec grand plaisir.
Merci d'avance
A voir également:
- Comment supprimer un formulaire crée
- Whatsapp formulaire opposition - Guide
- Supprimer rond bleu whatsapp - Guide
- Comment créer un groupe whatsapp - Guide
- Comment supprimer une page sur word - Guide
- Cree un compte google - Guide
13 réponses
Bonjour,
Effectivement la solution que l'on t'as déjà donné (innerHTML = '') est la bonne, la plus efficace et surtout la plus simple à mettre en place.
Reste maintenant à l'utiliser correctement selon ton besoin.
Dans ta page tu as plusieurs formulaires, si tu veux pouvoir les supprimer un à un (et pas tous en même temps) rien de plus simple, il suffit que tu ajoute ceux-ci dans des div indépendantes les unes des autres (dont l'identifiant sera numéro puisque tu as un ajout dynamique des formulaires dans ta page).
Il faudra également trouver un système pour pouvoir supprimer l'un de ces formulaires à la fois. La meilleure chose pour commencer je pense est d'intégrer le bouton delete dans chaque formulaire créé de manière à rattacher le bouton au formulaire à supprimer.
Tu vois ce que je veux dire ? L'explication est globale, à toi d'implémenter ça avec ton code et ta gestion existante, je ne peux pas mettre le nez dans ton code par manque de temps (suis au travail) donc bonne chance :)
Effectivement la solution que l'on t'as déjà donné (innerHTML = '') est la bonne, la plus efficace et surtout la plus simple à mettre en place.
Reste maintenant à l'utiliser correctement selon ton besoin.
Dans ta page tu as plusieurs formulaires, si tu veux pouvoir les supprimer un à un (et pas tous en même temps) rien de plus simple, il suffit que tu ajoute ceux-ci dans des div indépendantes les unes des autres (dont l'identifiant sera numéro puisque tu as un ajout dynamique des formulaires dans ta page).
Il faudra également trouver un système pour pouvoir supprimer l'un de ces formulaires à la fois. La meilleure chose pour commencer je pense est d'intégrer le bouton delete dans chaque formulaire créé de manière à rattacher le bouton au formulaire à supprimer.
Tu vois ce que je veux dire ? L'explication est globale, à toi d'implémenter ça avec ton code et ta gestion existante, je ne peux pas mettre le nez dans ton code par manque de temps (suis au travail) donc bonne chance :)
D'accord, merci beaucoup, ais oui oui je vais chercher déjà avec ce que j'ai. Et un autre truc aussi, mon bouton ajouter, ajoute bien de nouveaux formulaire, on rempli le premier, on en ajoute un autre, on rempli le deuxième on en ajoute un autre, ça ajoute bien un autre formulaire, mais ça efface aussi les données du deuxièmes formulaire, je pense que c'est encore un soucis de div... Et donc, si je crée des nouvelles div à chaque nouveaux formulaires, les données ne s'effaceront pas. vrai ou faux???
Merci encore
Et bon appétit pour dans 30min ;)
Merci encore
Et bon appétit pour dans 30min ;)
Ca dépends ton problème peut venir de plusieurs endroits.
Est ce que l'ajout est bien dynamique (pas de rafraichissement de la page) ? Si oui alors effectivement c'est certainement du au fait que tu met tout dans la même div.
Si ta page est raffraichie à chaque fois que tu ajoute un formulaire, si tu perds tes données c'est parce qu'elle ne sont pas transmise à ta page lors du rafraichissement, ou alors parce que tu ne les affiche pas suite au rafraichissement.
Sinon, voici un petit exemple que tu peux copier / coller chez toi et exécuter puis voir son fonctionnement. Cette page te permet d'ajouter / supprimer des formulaires à volonté sans rafraichir ta page.
Deux fichiers : la page en question, que l'on nommera 'forms.php' et dont voici le code :
Et au même endroit dans ton arborescence que cette page, créer le fichier de code javascript 'forms.js' avec le code suivant :
Voilà, j'ai testé sous FF3 et tout fonctionne correctement tu ne devrais pas avoir de bug.
Si tu as des questions je serai disponible après manger.
Est ce que l'ajout est bien dynamique (pas de rafraichissement de la page) ? Si oui alors effectivement c'est certainement du au fait que tu met tout dans la même div.
Si ta page est raffraichie à chaque fois que tu ajoute un formulaire, si tu perds tes données c'est parce qu'elle ne sont pas transmise à ta page lors du rafraichissement, ou alors parce que tu ne les affiche pas suite au rafraichissement.
Sinon, voici un petit exemple que tu peux copier / coller chez toi et exécuter puis voir son fonctionnement. Cette page te permet d'ajouter / supprimer des formulaires à volonté sans rafraichir ta page.
Deux fichiers : la page en question, que l'on nommera 'forms.php' et dont voici le code :
<?php include "forms.js"; ?> <body> <center> <BR>Interface d'ajout dynamique de formulaire <BR><input type="button" value="Ajouter un formulaire" onclick="addForm()"/> </center> <div id="formulaires"> </div> </body>
Et au même endroit dans ton arborescence que cette page, créer le fichier de code javascript 'forms.js' avec le code suivant :
<script language="javascript"> /* --- Global vars for number of form to add */ var numForm = 1; /* --- Global var for name of the global div that will regroup all forms of current page */ var contentDivName = "formulaires"; /* Main function to add a new form in the content page */ function addForm (){ // --- Retrieve content of div 'formulaire' var content = document.getElementById(contentDivName).innerHTML; // --- Get content of new form var newFormContent = buildNewForm(); // --- Set the new content of the main div 'formulaire' document.getElementById(contentDivName).innerHTML = content + newFormContent; } /* Function to build a simple form with an input text and a delete buton */ function buildNewForm (){ var contentForm = ""; contentForm += "<div id='form"+numForm+"'>"; contentForm += "<form>"; contentForm += "<input type='text' value='coucou"+numForm+"'/>"; contentForm += "<input type='button' value='delete' onclick='delForm("+numForm+")'/>"; contentForm += "</form>"; contentForm += "</div>"; // --- Increase form counter numForm++; return contentForm; } /* Function to remove a form from the page */ function delForm ( formNumber ){ // --- Try to retrieve the form from the page if ( document.getElementById("form"+formNumber) ){ // --- Reset the content of the div document.getElementById("form"+formNumber).innerHTML = ''; } } </script>
Voilà, j'ai testé sous FF3 et tout fonctionne correctement tu ne devrais pas avoir de bug.
Si tu as des questions je serai disponible après manger.
Super, merci!!!!!!!!
J'ai testé ton code, c'est exactement ce que je veux... Je vais maintenant l'incorporer à mon code, et je te dirais si c'est bon, mais normalement oui, sauf si je suis vraiment trop nuuuuuuuuuuulle!!!
Merci
J'ai testé ton code, c'est exactement ce que je veux... Je vais maintenant l'incorporer à mon code, et je te dirais si c'est bon, mais normalement oui, sauf si je suis vraiment trop nuuuuuuuuuuulle!!!
Merci
Voilà, les tests sont faits et merci pour l'aide. J'arrive bien à supprimer les bons formulaires, ceci dit, il y a toujours le soucis de quand j'ajoute, les données remplis dans les formulaires précédents s'effacent...
Donc voilà, je sais pas trop.
MErci en tt cas
Donc voilà, je sais pas trop.
MErci en tt cas
Ok, inspire toi de ça, encore plus compact, simple et rapide :
Fichier 'forms.php' toujours le même à peu de chose prêt:
Fichier 'forms.js' :
Voilà, j'ai testé, les valeurs ne disparaissent plus avec cette façon de faire. A toi d'adapter la création du formulaire avec les éléments dont tu as besoin :)
Fichier 'forms.php' toujours le même à peu de chose prêt:
<?php include "forms.js"; ?> <body> <center> <BR>Interface d'ajout dynamique de formulaire <BR><input type="button" value="Ajouter un formulaire" onclick="add()"/> </center> <div id="formulaires"> </div> </body>
Fichier 'forms.js' :
<script language="javascript"> function add(){ /* Retrieve fieldSet from the page */ var conteneur = document.getElementById(contentDivName); /* Create elements that we need into the new form to add */ var undiv = document.createElement('div'); var fich = document.createElement('input'); var but = document.createElement('input'); fich.type = 'text'; but.type = 'button'; but.value = 'delete form'; // Implement delete function on the button but.onclick = function(){ // Element to remove lediv = this.parentNode; // Element parent lefieldset = lediv.parentNode; // Remove the element lefieldset.removeChild(lediv); } /* Append elements (new form) into the page */ undiv.appendChild(fich); undiv.appendChild(but); conteneur.appendChild(undiv); } </script>
Voilà, j'ai testé, les valeurs ne disparaissent plus avec cette façon de faire. A toi d'adapter la création du formulaire avec les éléments dont tu as besoin :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour la réponse, j'y avais penser à ce système, mais j'ai encore du mal à le visualiser.
Si je comprend bien, il faut que je mette le bouton supprimer déjà dans le formulaire, ça ok. Il faut qu'à chaque fois que j'ajoute un nouveau formulaire, il faut créer une div dans laquelle le formulaire sera crée. Récupérer le numéro du bouton, pour supprimer le formulaire correspondant.
C'était une idée que j'avais eu aussi, mais que j'ai du mal à mettre en place. Crée des div dynamiquement ... argh.
Je ne suis pas calé en informatique, enfin, du moins, j'ai beaucoup de lacune, mais je sais ce que je veux au final, juste un soucis de visualisation du code.
Donc si tu as le temps de me mettre un peu plus en détail sur la piste. Bien que je ne te demande pas de faire mon boulot non plus, mais me parler de fonction et de boucle, et je rechercherais par la suite.
Merci d'avance et merci déjà pour ton aide.
Si je comprend bien, il faut que je mette le bouton supprimer déjà dans le formulaire, ça ok. Il faut qu'à chaque fois que j'ajoute un nouveau formulaire, il faut créer une div dans laquelle le formulaire sera crée. Récupérer le numéro du bouton, pour supprimer le formulaire correspondant.
C'était une idée que j'avais eu aussi, mais que j'ai du mal à mettre en place. Crée des div dynamiquement ... argh.
Je ne suis pas calé en informatique, enfin, du moins, j'ai beaucoup de lacune, mais je sais ce que je veux au final, juste un soucis de visualisation du code.
Donc si tu as le temps de me mettre un peu plus en détail sur la piste. Bien que je ne te demande pas de faire mon boulot non plus, mais me parler de fonction et de boucle, et je rechercherais par la suite.
Merci d'avance et merci déjà pour ton aide.
Ok, je vais développer un petit exemple en local chez moi et quand j'ai fini je le poste pour illustrer tout ça.
En attendant (car ça va dépendre de mon travail perso à coté) tu peux toujours chercher de ton coté :) (rien de mieux pour apprendre que se creuser la tête)
(dans 30 minutes pause miam donc ce sera pour cet aprem)
En attendant (car ça va dépendre de mon travail perso à coté) tu peux toujours chercher de ton coté :) (rien de mieux pour apprendre que se creuser la tête)
(dans 30 minutes pause miam donc ce sera pour cet aprem)
Recoucou,
Là, j'avoue qu'avec ton deuxième fichier, j'ai un peu de mal. Je le test, mais il se passe rien, en même temps, si j'ai bien compris, il n'y a pas de conteneur, donc je pense que c'est normal, après, savoir qu'est-ce qu'il faut associer avec quoi? c'est autre chose. Mais merci encore, tu m'as vraiment bien aidé.
Reste plus qu'à comprendre...
Encore merci...
Là, j'avoue qu'avec ton deuxième fichier, j'ai un peu de mal. Je le test, mais il se passe rien, en même temps, si j'ai bien compris, il n'y a pas de conteneur, donc je pense que c'est normal, après, savoir qu'est-ce qu'il faut associer avec quoi? c'est autre chose. Mais merci encore, tu m'as vraiment bien aidé.
Reste plus qu'à comprendre...
Encore merci...
Ha oui pardon c'est normal que ça ne fonctionne pas j'ai fait une erreur de copier / coller, dans le fichier 'forms.js', juste avant la déclaration de la fonction add() il faut que tu déclare la variable globale 'contentDivName' comme ceci :
Et ça devrait fonctionner correctement.
var contentDivName = "formulaires";
Et ça devrait fonctionner correctement.
Bonjour et bon début de semaine,
Arf, j'ai encore du mal à créer mon formulaire
Pour le moment c'est
Du coup, mon formulaire se fait sur une seule ligne, et je ne ois pas comment le mettre comme
chaine :
Codage :
Définition :
Systeme :
Donc avec des <br>, je ne sais pas où les placer.......Merci d'avance pour m'aider à situer ces br!!!!
Arf, j'ai encore du mal à créer mon formulaire
Pour le moment c'est
var contentDivName = "formulaires"; function add(){ /* Retrieve fieldSet from the page */ var conteneur = document.getElementById(contentDivName); /* Create elements that we need into the new form to add */ var undiv = document.createElement('div'); var MaChaine = document.createTextNode("Chaine : "); var chaine = document.createElement('input'); var MonCodage = document.createTextNode("Codage : "); var MonMpg4 = document.createTextNode("MPG4 "); var mpg4 = document.createElement('input'); var MonMpeg2 = document.createTextNode("MPEG2 "); var mpeg2 = document.createElement('input'); var MaDefinition = document.createTextNode("Définition : "); var MaSd= document.createTextNode("SD "); var sd = document.createElement('input'); var MaHd = document.createTextNode("HD "); var hd = document.createElement('input'); var MonSysteme = document.createTextNode("Systeme : "); var MonPal = document.createTextNode("PAL "); var pal = document.createElement('input'); var MonNTSC = document.createTextNode("NTSC "); var ntsc = document.createElement('input'); var but = document.createElement('input'); chaine.type = 'text'; mpg4.type = 'radio'; mpg4.name = 'chaine0'; mpeg2.type = 'radio'; mpeg2.name = 'chaine0'; sd.type = 'radio'; sd.name = 'def0'; hd.type = 'radio'; hd.name = 'def0'; pal.type = 'radio'; pal.name = 'sys0'; ntsc.type = 'radio'; ntsc.name = 'sys0'; but.type = 'button'; but.value = 'delete form'; // Implement delete function on the button but.onclick = function(){ // Element to remove lediv = this.parentNode; // Element parent lefieldset = lediv.parentNode; // Remove the element lefieldset.removeChild(lediv); } /* Append elements (new form) into the page */ undiv.appendChild(MaChaine); undiv.appendChild(chaine); undiv.appendChild(MonCodage); undiv.appendChild(MonMpg4); undiv.appendChild(mpg4); undiv.appendChild(MonMpeg2); undiv.appendChild(mpeg2); undiv.appendChild(MaDefinition); undiv.appendChild(MaSd); undiv.appendChild(sd ); undiv.appendChild(MaHd); undiv.appendChild(hd); undiv.appendChild(MonSysteme); undiv.appendChild(MonPal); undiv.appendChild(pal ); undiv.appendChild(MonNTSC); undiv.appendChild(ntsc); undiv.appendChild(but); conteneur.appendChild(undiv); }
Du coup, mon formulaire se fait sur une seule ligne, et je ne ois pas comment le mettre comme
chaine :
Codage :
Définition :
Systeme :
Donc avec des <br>, je ne sais pas où les placer.......Merci d'avance pour m'aider à situer ces br!!!!
J'ai essayé, mais ça ne me fais pas sauté de ligne, ça m'affiche :
<br>Chaine :
Donc arf, c'est pas ça!!!!!!!!!!!!!!!!!!!! niarf niarf niarf
<br>Chaine :
Donc arf, c'est pas ça!!!!!!!!!!!!!!!!!!!! niarf niarf niarf
Ok, il suffit de créer un élément BR et de l'ajouter à chaque fois là où tu souhaite avoir un retour à la ligne, exemple :
J'ai testé et ça fonctionne.
var undiv = document.createElement('div'); var sep = document.createElement('br'); var MaChaine = document.createTextNode("Chaine : "); var chaine = document.createElement('input'); ... undiv.appendChild(MaChaine); undiv.appendChild(sep); undiv.appendChild(chaine);
J'ai testé et ça fonctionne.
Y'a pas plus pratique??? parce qu'il faut faire un
var sep1 = document.createElement('br');
var sep2 = .....
var sep3 = .....
Autant de nouvelles variables que de sauts de ligne.
Parce que j'ai testé de mettre une variable et de l'appeller, mais ce n'est qu'au dernier appel où elle effectue le saut de ligne.
Cette solution me convient, mais au cas où il y aurait plus simple...
var sep1 = document.createElement('br');
var sep2 = .....
var sep3 = .....
Autant de nouvelles variables que de sauts de ligne.
Parce que j'ai testé de mettre une variable et de l'appeller, mais ce n'est qu'au dernier appel où elle effectue le saut de ligne.
Cette solution me convient, mais au cas où il y aurait plus simple...
ah noooooooooooooooooooon, ça finira donc pas..............
crotte flute zut...
j'ai mes boutons radios, si au deuxième formulaire, je sélectionne par exemple dans codage MPG4 et qu'au troisième formulaire je veux selectionne MPG4 ou MPEG2 et bien je peux pas
c'est à cause de ça...je ne peux sélectionne qu'un seul sur toute le page.........................comment faire pour éviter ça, pour pouvoir sélectionner un seul choix pour chaque formulaire???
Sachant qu'après, les données du formulaire doivent pouvoir être mis dans une base de données.
crotte flute zut...
j'ai mes boutons radios, si au deuxième formulaire, je sélectionne par exemple dans codage MPG4 et qu'au troisième formulaire je veux selectionne MPG4 ou MPEG2 et bien je peux pas
mpg4.type = 'radio'; mpg4.name = 'chaine0'; mpeg2.type = 'radio'; mpeg2.name = 'chaine0';
c'est à cause de ça...je ne peux sélectionne qu'un seul sur toute le page.........................comment faire pour éviter ça, pour pouvoir sélectionner un seul choix pour chaque formulaire???
Sachant qu'après, les données du formulaire doivent pouvoir être mis dans une base de données.
Re,
Donc pour répondre à ta première réponse, je pense que tu peux te permettre de ne créer qu'un seul objet et de l'ajouter là où tu le souhaite à chaque fois (vu que c'est un objet de mise en page et non de données, ça ne devrait pas gêner de l'avoir plusieurs fois dans ta page)
Pour ce qui est du problème des champs, effectivement, il va falloir remettre en place un système de numérotation des champs (pour les noms).
Il faut donc faire un mixte de ce que je t'ai donné auparavant de manière à avoir dans le nom de chaque champ de données, le numéro du formulaire. Grosso modo voilà ce que tu devrais avoir :
La variable globale 'numForm' qui compte le nombre de formulaire dans ta page :
Et la fonction d'ajout :
Dans cette fonction, le nommage de tes champs est dépendant du numéro de formulaire, tu ne devrais donc plus avoir de souci de champ avec le même nom dans ta page, et donc une mauvaise prise en compte des données.
Je n'ai pas testé mais logiquement ça devrait fonctionner.
La seule petite difficulté sera pour la suite, pour récupérer tes données : comme le numéro de formulaire s'incrémente à chaque fois que tu en créé un, il faudra, lorsque tu récupère tes données, ne pas tenir de ce numéro de version puisque celui-ci ne se suivra pas. Je veux dire que comme tu peux supprimer un formulaire, lorsque ton utilisateur envoi ses données, il y a aura peut être trois formulaire mais avec des numéros qui ne se suivent pas forcément (0, 2 et 3 par exemple si le formulaire 1 a été supprimé entre temps)
Donc pour répondre à ta première réponse, je pense que tu peux te permettre de ne créer qu'un seul objet et de l'ajouter là où tu le souhaite à chaque fois (vu que c'est un objet de mise en page et non de données, ça ne devrait pas gêner de l'avoir plusieurs fois dans ta page)
Pour ce qui est du problème des champs, effectivement, il va falloir remettre en place un système de numérotation des champs (pour les noms).
Il faut donc faire un mixte de ce que je t'ai donné auparavant de manière à avoir dans le nom de chaque champ de données, le numéro du formulaire. Grosso modo voilà ce que tu devrais avoir :
La variable globale 'numForm' qui compte le nombre de formulaire dans ta page :
/* --- Global vars for number of form to add */ var numForm = 0; /* --- Global var for name of the global div that will regroup all forms of current page */ var contentDivName = "formulaires";
Et la fonction d'ajout :
function ajouter(){ /* Retrieve fieldSet from the page */ var conteneur = document.getElementById(contentDivName); /* Create elements that we need into the new form to add */ var undiv = document.createElement('div'); var sep = document.createElement('br'); var MaChaine = document.createTextNode("Chaine : "); var chaine = document.createElement('input'); var MonCodage = document.createTextNode("Codage : "); var MonMpg4 = document.createTextNode("MPG4 "); var mpg4 = document.createElement('input'); var MonMpeg2 = document.createTextNode("MPEG2 "); var mpeg2 = document.createElement('input'); var MaDefinition = document.createTextNode("Définition : "); var MaSd= document.createTextNode("SD "); var sd = document.createElement('input'); var MaHd = document.createTextNode("HD "); var hd = document.createElement('input'); var MonSysteme = document.createTextNode("Systeme : "); var MonPal = document.createTextNode("PAL "); var pal = document.createElement('input'); var MonNTSC = document.createTextNode("NTSC "); var ntsc = document.createElement('input'); var but = document.createElement('input'); chaine.type = 'text'; mpg4.type = 'radio'; mpg4.name = 'chaine'+numForm; mpeg2.type = 'radio'; mpeg2.name = 'chaine'+numForm; sd.type = 'radio'; sd.name = 'def'+numForm; hd.type = 'radio'; hd.name = 'def'+numForm; pal.type = 'radio'; pal.name = 'sys'+numForm; ntsc.type = 'radio'; ntsc.name = 'sys'+numForm; but.type = 'button'; but.value = 'delete form'; // Implement delete function on the button but.onclick = function(){ // Element to remove lediv = this.parentNode; // Element parent lefieldset = lediv.parentNode; // Remove the element lefieldset.removeChild(lediv); } /* Append elements (new form) into the page */ undiv.appendChild(MaChaine); undiv.appendChild(chaine); undiv.appendChild(sep); undiv.appendChild(MonCodage); undiv.appendChild(MonMpg4); undiv.appendChild(mpg4); undiv.appendChild(sep); undiv.appendChild(MonMpeg2); undiv.appendChild(mpeg2); undiv.appendChild(MaDefinition); undiv.appendChild(sep); undiv.appendChild(MaSd); undiv.appendChild(sd ); undiv.appendChild(MaHd); undiv.appendChild(hd); undiv.appendChild(MonSysteme); undiv.appendChild(MonPal); undiv.appendChild(pal ); undiv.appendChild(MonNTSC); undiv.appendChild(ntsc); undiv.appendChild(but); conteneur.appendChild(undiv); numForm++; }
Dans cette fonction, le nommage de tes champs est dépendant du numéro de formulaire, tu ne devrais donc plus avoir de souci de champ avec le même nom dans ta page, et donc une mauvaise prise en compte des données.
Je n'ai pas testé mais logiquement ça devrait fonctionner.
La seule petite difficulté sera pour la suite, pour récupérer tes données : comme le numéro de formulaire s'incrémente à chaque fois que tu en créé un, il faudra, lorsque tu récupère tes données, ne pas tenir de ce numéro de version puisque celui-ci ne se suivra pas. Je veux dire que comme tu peux supprimer un formulaire, lorsque ton utilisateur envoi ses données, il y a aura peut être trois formulaire mais avec des numéros qui ne se suivent pas forcément (0, 2 et 3 par exemple si le formulaire 1 a été supprimé entre temps)
Merci pour la solution ...+numForm, pour undiv.appendChild(sep); on ne peut vraiment l'utiliser qu'une fois... J'ai essayer d'en mettre qu'un seul et l'appeller à chaque demande, et c'était à la derniere demande qu'il effectué mon saut de ligne, ptèt un rapport avec appendChild, ou une boucle qui récupère le dernier élément...
Mais c'est pas grave, je vais garder les différents sep : sep1, sep2, sep3, sep4, sep5.
Mais c'est pas grave, je vais garder les différents sep : sep1, sep2, sep3, sep4, sep5.