Ajouter des éléments de formulaire sans PHP

Ajouter des éléments de formulaire sans PHP - HTML/CSS - Programmation

Marsh Posté le 24-02-2005 à 14:52:16    

Bonjour,
 
Je voudrais créer un formulaire auquel je pourrais ajouter des éléments en appuyant sur un bouton.
 
En clair : j'ai un bouton "ajouter textField" et quand je clic dessus hop, un textfield apparait à la suite de ceux qui y étaient déjà. Ceci à l'infini.
 
En php c'est simple à faire, mais je voudrais faire ça sans avoir à  solliciter le serveur à chaque changement. Y'a pas une possibilité en JS par exemple ? J'ai cherché sur plusieurs sites et fait quelques tests sans résultat :/

Reply

Marsh Posté le 24-02-2005 à 14:52:16   

Reply

Marsh Posté le 24-02-2005 à 14:54:32    

Y a possibilité en JS mais pas tout le monde le verra et ca sera temporaire


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 24-02-2005 à 15:11:17    

Oui oui évidement, ça reste en local etc. C'est juste que je veux que l'utilisateur choisisse le nombre d'infos qui rentre, donc c'est temporairement et juste pour lui que ça change.
 
Tu sais comment faire alors ?

Reply

Marsh Posté le 06-12-2005 à 21:22:11    

Je fais un gros up de ce topic, car j'allais créer quasiment le même ...
 
Donc je pose la même question. Comment ajouter des champs texte, checkbox et autres, à la volée, en cliquant sur un bouton...
 
Je sais le faire en PHP, mais je sais que c'est possible en JS.
 
Merci
 
Edit : Je ne m'y connais que très peu en JS, je n'en fais quasiment jamais, j'ai essayé un truc dans le genre pour commencer :
 
La fonction :

Code :
  1. function test()
  2. {
  3. window.document.myform.write('<input type="text">');
  4. }


 
Et le formulaire :
 

Code :
  1. <form name="myform">
  2. <input type="button" onclick="test();">
  3. </form>


 
... pour essayer d'inscrire un simple champs en appuyant sur un bouton ... mais bien evidemment ça ne marche pas :D


Message édité par Dj YeLL le 06-12-2005 à 21:23:56

---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 06-12-2005 à 21:51:08    

Bon ben en cherchant à droite à gauche dans les fonction JS, j'ai réussi à faire ça :
 

Code :
  1. function test()
  2. {
  3. var elem = document.createElement("input" );
  4. elem.setAttribute("type", "text" );
  5. document.forms.myform.appendChild(elem);
  6. }


 
:)


Message édité par Dj YeLL le 06-12-2005 à 21:51:21

---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 06-12-2005 à 21:57:25    

document.createElement
et aussi Element.appenChild
 
exemple :  
var monformulaire = document.getElementById("myform" )
var moninput = monformulaire.appendChild(document.createElement("INPUT" ));
moninput.type = "text";
 
bien entendu tu rajoute un id à ton formulaire

Reply

Marsh Posté le 06-12-2005 à 21:58:18    

erf grilled, utilise plutot le getElementById et met un id sur ton formulaire. c'est plus conventionnel que ton truc zarbi

Reply

Marsh Posté le 06-12-2005 à 22:01:42    

Ok, merci pour l'info :)


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 06-12-2005 à 22:27:53    

Voilà, si ça peut donner des idées à d'autres :
 

Code :
  1. <html>
  2. <head>
  3. <script language="JavaScript" type="text/javascript">
  4. var nombreChamp = 0;
  5. function test(what)
  6. {
  7. if(what == 'plus')
  8. {
  9.  var elem = document.createElement("input" );
  10.  elem.setAttribute("type", "text" );
  11.  document.getElementById("myform" ).appendChild(elem);
  12.  nombreChamp++;
  13. }
  14. else if(what == 'moins' && nombreChamp > 0)
  15. {
  16.  var childlast = document.getElementById("myform" ).lastChild;
  17.  document.getElementById("myform" ).removeChild(childlast);
  18.  nombreChamp--;
  19. }
  20. document.getElementById("infoChamp" ).firstChild.replaceData(0,35,'Il y a actuellement ' + nombreChamp + ' champs.');
  21. }
  22. </script>
  23. </head>
  24. <body>
  25. <p id="infoChamp">Il y a actuellement 0 champs.</p>
  26. <form name="myform" id="myform">
  27. <input type="text" name="nombre" value="" size="30">
  28. <input type="button" onclick="test('plus');" value="+">
  29. <input type="button" onclick="test('moins');" value="-">
  30. </form>
  31. </body>
  32. </html>


 
Le compteur est là pour 2 raisons. D'une part pour indiquer le nombre de champs affichés, mais surtout pour eviter d'effacer le bouton "moins" lorsqu'il n'y à plus de champs (car il efface le lastChild ... et s'il n'y a plus de champs, le lastChild est le bouton "moins" ).


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 06-12-2005 à 22:29:15    

Par contre j'aimerais bien savoir comment faire pour que les champs se retrouvent un au dessus de l'autre, et non un à côté de l'autre ...


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 06-12-2005 à 22:29:15   

Reply

Marsh Posté le 06-12-2005 à 22:33:17    

J'ai modifié ça :
 

Code :
  1. if(what == 'plus')
  2. {
  3.  var ligne = document.createElement("tr" );
  4.  var colonne = document.createElement("td" );
  5.  ligne.appendChild(colonne);
  6.  var elem = document.createElement("input" );
  7.  elem.setAttribute("type", "text" );
  8.  colonne.appendChild(elem);
  9.  document.getElementById("myform" ).appendChild(colonne);
  10.  nombreChamp++;
  11. }


 
Mais pour le moment ça fait très goret :D
 
Je vais nettoyer tout ça :)


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 06-12-2005 à 22:37:52    

vire ca, un formulaire c'est jamais fait avec des tableau, mais des inputs, label et des <br>
 
il te suffit juste de rajouter un <br> après avoir ajouter un input tout simplement
 
exemple :  

Code :
  1. document.getElementById("myform" ).appendChild(elem);
  2. document.getElementById("myform" ).appendChild(document.createElement("BR" );


et sinon :  

Code :
  1. else if(what == 'moins' && nombreChamp > 0)
  2.     {
  3.         var childlast = document.getElementById("myform" ).lastChild;
  4.         document.getElementById("myform" ).removeChild(childlast);
  5.         var childlast = document.getElementById("myform" ).lastChild;
  6.         document.getElementById("myform" ).removeChild(childlast);
  7.         nombreChamp--;
  8.     }


là faut supprimer deux enfants, puisque tu rajoute un BR en plus du input

Reply

Marsh Posté le 06-12-2005 à 22:50:32    

Merci beaucoup :)
 
Ca va comme ça :
 

Code :
  1. var nombreChamp = 0;
  2. function test(what)
  3. {
  4. if(what == 'plus')
  5. {
  6.  var elem = document.createElement("input" );
  7.  elem.setAttribute("type", "text" );
  8.  elem.setAttribute("name", "champ" + nombreChamp);
  9.  document.getElementById("myform" ).appendChild(elem);
  10.  document.getElementById("myform" ).appendChild(document.createElement("BR" ));
  11.  nombreChamp++;
  12. }
  13. else if(what == 'moins' && nombreChamp > 0)
  14. {
  15.  for(var i = 0;i < 2;i++)
  16.  {
  17.   var childlast = document.getElementById("myform" ).lastChild;
  18.   document.getElementById("myform" ).removeChild(childlast);
  19.  }
  20.  nombreChamp--;
  21. }
  22. document.getElementById("infoChamp" ).firstChild.replaceData(0,35,'Il y a actuellement ' + nombreChamp + ' champs.');
  23. }


 
J'aimerais bien également ajouter un texte devant chaque champ, du genre "Champ 1", "Champ 2" etc...
 
j'ai utilisé un replaceData pour modifier le texte dans la balise <p> mais je me demande s'il n'existe pas mieux. J'ai vu à plusieurs reprise le terme innerHTML mais je crois avoir compris que c'est pour IE. Il doit sûrement exister une meilleur solution :)
 
Merci


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 06-12-2005 à 23:26:39    

Dj YeLL a écrit :

J'ai vu à plusieurs reprise le terme innerHTML mais je crois avoir compris que c'est pour IE. Il doit sûrement exister une meilleur solution :)


innerHTML ne fait pas partie de DOM mais tous les navigateurs le supportent.
 
La "bonne" méthode pour modifier le texte d'un élément c'est tonELement.firstChild.nodeValue = "..."
 
Pas la peine d'utiliser replaceData à moins d'avoir un besoin spécifique...


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 06-12-2005 à 23:29:27    

gatsu35 a écrit :

vire ca, un formulaire c'est jamais fait avec des tableau, mais des inputs, label et des <br>


Le "jamais" me choque... Je peux tout à fait avoir besoin d'avoir un formulaire dans un tableau. Lorsque ce formulaire représente des données tabulaires tout simplement (par exemple une matrice dont il faut donner les valeurs)
 
Par contre ton <br>, lui il ne faut jamais l'utiliser en effet. Si tu dois revenir à la ligne tu utilises des DIV.


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 07-12-2005 à 00:19:45    

Merci pour ces infos, je terminerai demain, sur ce, je vais me coucher !
 
Encore merci à tous.
 
++


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 07-12-2005 à 01:44:02    

gm_superstar a écrit :

Par contre ton <br>, lui il ne faut jamais l'utiliser en effet. Si tu dois revenir à la ligne tu utilises des DIV.


Des <label> en display: block et des fieldsets :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 07-12-2005 à 07:22:46    

gm_superstar a écrit :

Le "jamais" me choque... Je peux tout à fait avoir besoin d'avoir un formulaire dans un tableau. Lorsque ce formulaire représente des données tabulaires tout simplement (par exemple une matrice dont il faut donner les valeurs)
 
Par contre ton <br>, lui il ne faut jamais l'utiliser en effet. Si tu dois revenir à la ligne tu utilises des DIV.


 
DIV c'est pas fait pour tout, trop de gens entendent div et on voit du caca partout. !!!!
 
un formulaire c'est :  
FORM, FIELDSET, LEGEND, INPUT, TEXTAREA, LABEL, j'utilise des label pour revenir à la ligne dans un formulaire, car sinon d'une part tu ajoutes trop de code (<div></div> et d'autre part c'est un peu inutile).
 
le <br> me permet d'afficher correctement le formulaire si la personne n'a pas activé la feuille de style justement.
 

Reply

Marsh Posté le 07-12-2005 à 07:29:04    

pour ajouter du texte devant chaque champ, normalement tu associes chaque champ à un label
 
<label for="monchamp"><input type="text" id="monchamp" value="truc">
 
donc il suffit tout simple de rajouter ceci :  

Code :
  1. if(what == 'plus')
  2.     {
  3.         var elem = document.createElement("input" );
  4.         elem.setAttribute("type", "text" );
  5.         elem.setAttribute("name", "champ" + nombreChamp);
  6.         elem = document.getElementById("myform" ).appendChild(elem);
  7.         var labelElem = document.insertBefore(document.createElement("LABEL" ),elem);
  8.         label.nodeValue = "Montexte";
  9.         label.for = "monchamp";
  10.         elem.id = "monchamp";
  11. document.getElementById("myform" ).appendChild(document.createElement("BR" ));
  12.         nombreChamp++;
  13.     }


 
ya plusieurs moyens  
soit la technique du insertbefore, mais comme toi tu créés les champs à la volé, autant faire un document.appendChield(monnouveaulabel)
juste avant d'ajouter ton élément

Reply

Marsh Posté le 07-12-2005 à 11:23:51    

Merci :) Ca ne fonctionnait pas mais ça m'a mis sur la voie :
 

Code :
  1. if(what == 'plus')
  2. {
  3.  var elem = document.createElement("input" );
  4.  elem.setAttribute("type", "text" );
  5.  elem.setAttribute("name", "champ" + nombreChamp);
  6.  elem.setAttribute("id", "champ" + nombreChamp);
  7.  var labelElem = document.createElement("label" );
  8.  labelElem.setAttribute("for", "champ" + nombreChamp);
  9.  var labelText = document.createTextNode("Choix " + nombreChamp);
  10.  labelElem.appendChild(labelText);
  11.  document.getElementById("listeChamp" ).appendChild(labelElem);
  12.  document.getElementById("listeChamp" ).appendChild(elem);
  13.  document.getElementById("listeChamp" ).appendChild(document.createElement("BR" ));
  14.  nombreChamp++;
  15. }


 
J'ai dû faire un createTextNode, et ensuite faire un appendChild sur le label.


Message édité par Dj YeLL le 07-12-2005 à 11:24:25

---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 07-12-2005 à 11:38:39    

gm_superstar a écrit :

innerHTML ne fait pas partie de DOM mais tous les navigateurs le supportent.
 
La "bonne" méthode pour modifier le texte d'un élément c'est tonELement.firstChild.nodeValue = "..."
 
Pas la peine d'utiliser replaceData à moins d'avoir un besoin spécifique...


 
Ca ne marche pas, j'ai une erreur JS :
 

Code :
  1. Erreur : document.getElementById("infoChamp" ).firstChild.nodeValue is not a function


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 07-12-2005 à 11:46:40    

en mettant ça ça marche :
 

Code :
  1. document.getElementById("infoChamp" ).firstChild.data = 'Il y a actuellement ' + nombreChamp + ' champs.';


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 08-12-2005 à 01:07:35    

gatsu35 a écrit :

DIV c'est pas fait pour tout, trop de gens entendent div et on voit du caca partout. !!!!


Heu non c'était pas vraiment mon propos... Il s'agit pas d'en mettre de partout mais de les utiliser là où on en a besoin, c'est à dire lorsqu'il s'agit d'empiler des groupes d'éléments de formulaires les uns sur les autres sachant qu'on va pas forcément utiliser un <fieldset> pour chaque ligne ni associer un <label> à chaque élément.
 

gatsu35 a écrit :

j'utilise des label pour revenir à la ligne dans un formulaire, car sinon d'une part tu ajoutes trop de code (<div></div> et d'autre part c'est un peu inutile).


A la limite pourquoi pas, mais on ne peut pas toujours faire comme ça (comment faire si j'ai 3 <input> avec leur <label> sur une ligne ?)
Encore une fois il ne s'agit pas de mettre des <div> pour le plaisir d'en mettre mais de les utiliser pour ce qu'il sont. Et à ce moment là il deviennent un élément structurant du code en séparant le formulaire en sections. Alors que si un coup j'ai un <label> de type en-ligne et un autre coup un <label> de type bloc, on perd la structure du formulaire au niveau du code.
 

gatsu35 a écrit :

le <br> me permet d'afficher correctement le formulaire si la personne n'a pas activé la feuille de style justement.


Ca reste très très rare ça... Et ça ne poserait pas autant de problème si tu ne détournais pas les <label> de leur utilisation première.


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 08-12-2005 à 01:08:12    

Dj YeLL a écrit :

Ca ne marche pas, j'ai une erreur JS :
 

Code :
  1. Erreur : document.getElementById("infoChamp" ).firstChild.nodeValue is not a function



Ben ça marche chez moi... Il faut bien sûr que firstChild existe...


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 08-12-2005 à 07:21:57    

encore un truc justement :  
le label peut être utilisé de deux manière :  
 
<label for="monchamp">text</label><input id="monchamp" type="texte">
 
ou bien  
 
<label>texte<input type="texte"></label>
 
je préfère utiliser la première methode qui est plus conventionnelle à mon gout et plus libre pour du style.
 
m'enfin bon on va pas  se taper dessus pou un ou deux div de trop je le le conçois.
 
Du moment que 99,9% de ton code (gm_superstar) reste propre et optimisé (et je pense qu'il l'est) ya pas de soucis.
 
du moment que tu fais pas comme l'autre guignol de cidcreation :D

Reply

Marsh Posté le 28-02-2006 à 09:45:24    

Bonjour tt le monde, als je suis debutante en php, et un peu d'aide serait la bienvenue.
d'abord,je veux égalemt faire un bouton "ajouter" qui lorsqu'il est cliqué ajoute un champ de texte.
1ere question: g vu qu'il était simple de le faire en php, ms comment? et est-ce qu'il vaut mieux le faire en php ou javascript?
2ème question: j'ai essayé votre solution en javascript, qui marche, mais jaurais voulu que les chps de texte s'ajoutent  avant le bouton ajouter: voici mon code si je suis pas très claire:
 
<html>
 
<head>
 
 <title> Essai formulaire </title>
 
<script language="JavaScript" type="text/javascript">
 
var nombreChamp = 6;
function test(what)
{
elem = document.createElement("input" );
elem.setAttribute("type", "text" );
elem.setAttribute("size", "30" );
elem.setAttribute("name", "theme" + nombreChamp);
document.getElementById("myform" ).appendChild(elem);
document.getElementById("myform" ).appendChild(document.createElement("br" ));
nombreChamp++;
}
 
</script>  
 
</head>
 
<body>
 
<p id="infoChamp"> </p>
 
<form name="myform" id="myform" method="post" action="essai_formulaire2.php">
<h2> Etape 1: Générer les thèmes <p> </h2> <p>
Thème 1 <input type="text" name="theme1" size="30"> <br>
Thème 2 <input type="text" name="theme2" size="30"> <br>
Thème 3 <input type="text" name="theme3" size="30"> <br>
Thème 4 <input type="text" name="theme4" size="30"> <br>
Thème 5 <input type="text" name="theme5" size="30"> <br>
<input type="button" onclick="test('ajouter');" value="Ajouter un thème"> <br>
<input type="submit" value="Valider"> <br>
</form>
 
</body>
 
</html>
 
merci..

Reply

Marsh Posté le 31-05-2006 à 17:56:15    

J'ai une question...

 

J'ai pris le meme script que Yell, avec les précieux conseils de Gatsu35, mais j'ai un probleme, qui est plus au niveau de la forme.

 

Voila le code Javascript :

Code :
  1. var nombreChamp = 1;
  2.     function add_input(action)
  3.     {
  4.         //alert(nombreChamp);
  5.         if (action == 'Ajouter un contact')
  6.         {
  7.             var elem = document.createElement("input" );
  8.             elem.setAttribute("type", "text" );
  9.             document.getElementById("compte_rendu" ).appendChild(elem);
  10.             document.getElementById("compte_rendu" ).appendChild(document.createElement("BR" ));
  11.             nombreChamp++;
  12.         }
  13.         else if (action == 'Supprimer un contact' && nombreChamp > 0)
  14.         {
  15.             for (var i = 0; i < 2; i++)
  16.             {
  17.                 var childlast = document.getElementById("compte_rendu" ).lastChild;
  18.                 document.getElementById("compte_rendu" ).removeChild(childlast);
  19.             }
  20.             nombreChamp--;
  21.         }
  22.         if (nombreChamp > 1)
  23.         {
  24.             document.getElementById("ContactChamp" ).firstChild.replaceData(0, 20, 'Contacts : ');
  25.             //document.getElementById("FonctionChamp" ).firstChild.replaceData(0, 35, 'Fonctions : ');
  26.         }
  27.         else
  28.         {
  29.             document.getElementById("ContactChamp" ).firstChild.replaceData(0, 20, 'Contact : ');
  30.             //document.getElementById("FonctionChamp" ).firstChild.replaceData(0, 35, 'Fonction : ');
  31.         }
  32.     }


Et la le code concernant les inputs en HTML, avec l'ajout du Javascript ci dessus :

 
Code :
  1. <form name="compte_rendu" id="compte_rendu" method="post" action=<?=$_SERVER["PHP_SELF"]?>>
  2. <table>
  3. <tr>
  4. <td>Auteur : </td><td><input type=text name="auteur" value="<?=$utilisateur->nom." ".$utilisateur->prenom?>" size=30><br></td></tr>
  5.     <tr><td>Date : </td><td><input type=text name="date" value="<?=$date['mday']."/".$date['mon']."/".$date['year']?>" size=20><br></td></tr>
  6.    
  7.         <tr><td id="ContactChamp">Contact : </td><td><input type=text name="contacts" value="Nom..." onFocus="if (this.value=='Nom...') {this.value=''}" OnBlur="if (this.value=='') {this.value='Nom...'}" size=20>&nbsp;&nbsp;&nbsp;&nbsp;
  8.        
  9. <input type=text name="fonction" value="Profession..." onFocus="if (this.value=='Profession...') {this.value=''}" onBlur="if(this.value=='') {this.value='Profession...'}" size=20>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  10.         <input type=button value="Ajouter un contact" onCLick="add_input('Ajouter un contact');">&nbsp;&nbsp;
  11.         <input type=button value="Supprimer un contact" onCLick="add_input('Supprimer un contact');"></td></tr>
  12.         <!-- <tr><td id="FonctionChamp">Fonction : </td><td><input type=text name="fonction" value="" size=20><br></td></tr> -->
  13.     <tr><td>Titre : </td><td><input type=text name="titre" value="" size=81><br></td></tr>
  14.     <tr><td>Texte : </td><td><textarea name="corps" value="" rows=25 cols=60></textarea><br></td></tr>
  15.     <tr><td>&nbsp;</td></tr>
  16.     <tr><td>&nbsp;</td><td><input type=submit name=Envoyer value="Envoyer">&nbsp;&nbsp;&nbsp;&nbsp;<input type=reset name=Effacer value="Effacer"></td></tr>
  17. </table>
  18. </form>


Je joints aussi deux screenshots pour que vous essayer de comprendre mon probleme :

 


Avant :

 

http://myspace-850.vo.llnwd.net/00784/05/88/784658850_l.jpg

 

Et Apres :

 

http://myspace-503.vo.llnwd.net/00784/30/59/784659503_l.jpg

 

Comme vous pouvez voir les inputs se mettent à la fin du formulaire, alors que bien evidemment je voudrais qu'ils se mettent en dessous de l'input contact.

 

Quelqu'un saurait comment faire ?

 

Merci d'avance...  :hello:

 

Reply

Marsh Posté le 31-05-2006 à 18:11:25    

tu fais ton appendChild dans ton formulaire, normal que cela apparaisse à la fin [:spamafote]
Il faut que tu utilises

Code :
  1. Set Objet_Node = Objet_Node.insertBefore(Nouvel_Enfant, Référence)


Avec pour Référence, le noeud avant lequel tu veux ajouter ton bouzin...
 
Ah et ne recherche pas insertAfter n'existe po ;)

Reply

Marsh Posté le 01-06-2006 à 09:37:37    

euhhh, tu peux me donner un exemple, car je ne vois pas trop comment celà peut il fonctionner ?
Je m'y connais que tres peu en javascript  :??:  
Merci d'avance !

Reply

Marsh Posté le 01-06-2006 à 09:56:44    

une petite recherche sur google t'en donneras des tonnes d'exemple :o
Mais en voila un quand même:

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
  4. <head>
  5.   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  6.   <title>Exemple</title>
  7.   <script type="text/javascript">
  8. function test(){
  9.   var newNode=document.createElement('hr');
  10.   document.getElementById('pouet').insertBefore(newNode, document.getElementById('truc'));
  11. }
  12.   </script>
  13. </head>
  14. <body>
  15. <div id="pouet">
  16.    <div id="truc">truc</div>
  17. </div>
  18. <input type="button" value="test" onclick="test()"/>
  19. </body>
  20. </html>

Reply

Marsh Posté le 01-06-2006 à 10:09:52    

ok, je vois ce qu'il faut faire, mais comment le faire en dehors du formulaire, car tu me dis que ca chie à cause du formulaire, à moins que c'est moi qui ai mal interprété  :pt1cable:

Reply

Marsh Posté le 01-06-2006 à 10:15:19    

et feignant ça te dit pas de réflechir un peu :o

Code :
  1. Objet_Node.insertBefore(Nouvel_Enfant, Référence)


S'quand même pas compliqué:
- tu dois ajouter un nouveau noeud (Nouvel_Enfant)
- dans ton formulaire (Objet_Node)
- avant un element que tu détermine ( Référence),  qui doit être le titre si j'ai tout compris

Reply

Marsh Posté le 01-06-2006 à 10:24:10    

Bah je fais ca, dans la logique des choses devrait etre bon, mais il ne fait rien...

Code :
  1. var elem = document.createElement("input" );
  2.             elem.setAttribute("type", "text" );
  3.   document.getElementById("compte_rendu" ).insertBefore(elem, document.getElementById("titre" ));

Reply

Marsh Posté le 01-06-2006 à 10:46:43    

et l'erreur dans la console js c'est possible de l'avoir?

Reply

Marsh Posté le 01-06-2006 à 10:53:20    

il me met ligne 70, char 4 : Argument non valide.
Alors qu'à la ligne 70 de mon code, c'est ca : "if (action == 'Ajouter un contact')", j'ai meme essayé d'enlever cette ligne, mais l'erreur reste toujours.
 
Moi y en a pas comprendre là...

Reply

Marsh Posté le 01-06-2006 à 10:57:33    

De plus, j'ai la meme erreur quand je clic sur supprimer, chose qui est bizarre, car je ne suppose pas que Yell ai eu de probleme vis à vis de çà...

Reply

Marsh Posté le 01-06-2006 à 11:01:04    

ligne 68?

Reply

Marsh Posté le 01-06-2006 à 11:03:49    

ligne 68 c'est ca : "function add_input(action)", l'entrée de la fonction, et la ligne ou je rentre dans le code qui gère le bouton supprimer est la suivante :"else if (action == 'Supprimer un contact' && nombreChamp > 0)
  {".
 
ou l'accolade est situé à la ligne 81, donc là je suis largué, je ne comprends absolument pas pourquoi il me pete une erreur :(


Message édité par krovomi le 01-06-2006 à 11:05:12
Reply

Marsh Posté le 01-06-2006 à 11:08:39    

ligne 67?

Reply

Marsh Posté le 01-06-2006 à 11:12:27    

bah je ne vois pas pourquoi tu veux que je te donne ce qu'il y a à la ligne 67 si l'erreur n'est pas ici ?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed