Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1660 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Ajouter des éléments de formulaire sans PHP

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Ajouter des éléments de formulaire sans PHP

n°992476
Luigi
Living's easy with eyes closed
Posté le 24-02-2005 à 14:52:16  profilanswer
 

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 :/

mood
Publicité
Posté le 24-02-2005 à 14:52:16  profilanswer
 

n°992482
esox_ch
Posté le 24-02-2005 à 14:54:32  profilanswer
 

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
n°992498
Luigi
Living's easy with eyes closed
Posté le 24-02-2005 à 15:11:17  profilanswer
 

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 ?

n°1260555
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-12-2005 à 21:22:11  profilanswer
 

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
n°1260570
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-12-2005 à 21:51:08  profilanswer
 

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
n°1260580
gatsu35
Blablaté par Harko
Posté le 06-12-2005 à 21:57:25  profilanswer
 

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

n°1260583
gatsu35
Blablaté par Harko
Posté le 06-12-2005 à 21:58:18  profilanswer
 

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

n°1260588
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-12-2005 à 22:01:42  profilanswer
 

Ok, merci pour l'info :)


---------------
Gamertag: CoteBlack YeLL
n°1260615
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-12-2005 à 22:27:53  profilanswer
 

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
n°1260617
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-12-2005 à 22:29:15  profilanswer
 

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
mood
Publicité
Posté le 06-12-2005 à 22:29:15  profilanswer
 

n°1260619
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-12-2005 à 22:33:17  profilanswer
 

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
n°1260622
gatsu35
Blablaté par Harko
Posté le 06-12-2005 à 22:37:52  profilanswer
 

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

n°1260627
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-12-2005 à 22:50:32  profilanswer
 

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
n°1260643
gm_superst​ar
Appelez-moi Super
Posté le 06-12-2005 à 23:26:39  profilanswer
 

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
n°1260644
gm_superst​ar
Appelez-moi Super
Posté le 06-12-2005 à 23:29:27  profilanswer
 

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
n°1260654
Dj YeLL
$question = $to_be || !$to_be;
Posté le 07-12-2005 à 00:19:45  profilanswer
 

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


---------------
Gamertag: CoteBlack YeLL
n°1260674
masklinn
í dag viðrar vel til loftárása
Posté le 07-12-2005 à 01:44:02  profilanswer
 

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
n°1260711
gatsu35
Blablaté par Harko
Posté le 07-12-2005 à 07:22:46  profilanswer
 

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.
 

n°1260713
gatsu35
Blablaté par Harko
Posté le 07-12-2005 à 07:29:04  profilanswer
 

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

n°1260799
Dj YeLL
$question = $to_be || !$to_be;
Posté le 07-12-2005 à 11:23:51  profilanswer
 

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
n°1260813
Dj YeLL
$question = $to_be || !$to_be;
Posté le 07-12-2005 à 11:38:39  profilanswer
 

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
n°1260816
Dj YeLL
$question = $to_be || !$to_be;
Posté le 07-12-2005 à 11:46:40  profilanswer
 

en mettant ça ça marche :
 

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


---------------
Gamertag: CoteBlack YeLL
n°1261380
gm_superst​ar
Appelez-moi Super
Posté le 08-12-2005 à 01:07:35  profilanswer
 

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
n°1261381
gm_superst​ar
Appelez-moi Super
Posté le 08-12-2005 à 01:08:12  profilanswer
 

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
n°1261442
gatsu35
Blablaté par Harko
Posté le 08-12-2005 à 07:21:57  profilanswer
 

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

n°1315043
luna_35
Posté le 28-02-2006 à 09:45:24  profilanswer
 

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..

n°1378323
krovomi
Posté le 31-05-2006 à 17:56:15  profilanswer
 

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:

 

n°1378336
anapajari
s/travail/glanding on hfr/gs;
Posté le 31-05-2006 à 18:11:25  profilanswer
 

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 ;)

n°1378588
krovomi
Posté le 01-06-2006 à 09:37:37  profilanswer
 

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 !

n°1378603
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-06-2006 à 09:56:44  profilanswer
 

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>

n°1378611
krovomi
Posté le 01-06-2006 à 10:09:52  profilanswer
 

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:

n°1378613
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-06-2006 à 10:15:19  profilanswer
 

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

n°1378615
krovomi
Posté le 01-06-2006 à 10:24:10  profilanswer
 

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" ));

n°1378631
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-06-2006 à 10:46:43  profilanswer
 

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

n°1378639
krovomi
Posté le 01-06-2006 à 10:53:20  profilanswer
 

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à...

n°1378645
krovomi
Posté le 01-06-2006 à 10:57:33  profilanswer
 

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 çà...

n°1378650
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-06-2006 à 11:01:04  profilanswer
 

ligne 68?

n°1378653
krovomi
Posté le 01-06-2006 à 11:03:49  profilanswer
 

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
n°1378659
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-06-2006 à 11:08:39  profilanswer
 

ligne 67?

n°1378663
krovomi
Posté le 01-06-2006 à 11:12:27  profilanswer
 

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 ?

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Ajouter des éléments de formulaire sans PHP

 

Sujets relatifs
Post d'un formulaire d'une fenetre fille vers une fenetre mère!Récupérations infos formulaire dans ce meme formulaire
Pb de connection PHPSolution pour ne pas reloader mon menu flash ! (FRAMES/PHP/CSS ?)
[PHP] systeme de rdv[Résolu][Perl/Gtk2] Récupérer les éléments d'un Gtk2::TreeView
Axis Cam IP et PHPValidation de formulaire
comment faire un double lien en PHP ? [reglé]Livre d'Or en PHP
Plus de sujets relatifs à : Ajouter des éléments de formulaire sans PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR