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

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

Ajouter des éléments de formulaire sans PHP

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

Reprise du message précédent :
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 01-06-2006 à 11:12:27  profilanswer
 

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

c'était une façon de te faire comprendre que si tu ne files pas tout ton code on va avoir du mal à te dire ce qui plante [:spamafote]

n°1378678
krovomi
Posté le 01-06-2006 à 11:30:50  profilanswer
 

ah ok pardon ^^
 

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


 
Sachant que la ligne 67 et la 1ere ici, mais en cherchant un peu plus et en telechargeant la console JS sous Mozilla, il s'agit d'une erreur de type :
NS_ERROR_DOM_NOT_FOUND_ERR, donc je cherche ce que ca peut etre sur google, si tu sais ce que c'est, je prendrais volontiers tes sources ;)
 
Merci de ta patience

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

:(  
je fais comment pour tester? J'invente une page html ou je m'amuse a mettre des divs avec les memes ids que dans un structure identique pour pouvoir essayer... Nan parce que la tu m'en voudras pas mais mon interpreteur cérébral de javascript merdouille un peu.
 
T'aurais pas la page en ligne des fois?

n°1378703
krovomi
Posté le 01-06-2006 à 11:57:15  profilanswer
 
n°1378724
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-06-2006 à 12:12:56  profilanswer
 

Bon tu faisais un peu n'importe quoi ;)
Tout d'abord j'imagine que tes inputs tu souhaites en fait les mettre dans le td qui contient les autres inputs contacts, j'ai donc rajouté un id sur celui-ci:

Code :
  1. <tr><td id="ContactChamp">Contact : </td><td id="ContactInputChamp">...


Et ensuite j'ai corrigé la fonction comme ça:

Code :
  1. if (action == 'Ajouter'){
  2.   var elem = document.createElement("input" );
  3.   elem.setAttribute("type", "text" );
  4.   document.getElementById("ContactInputChamp" ).insertBefore(elem, document.getElementById("ContactInputChamp" ).childNodes[document.getElementById("ContactInputChamp" ).childNodes.length -3]);
  5.   nombreChamp++;
  6. }


En supposant que tu le voulais avant les 2 boutons ...
 
Par contre un gros conseil, l'utilisation du DOM et la mise en page via des tableaux ça va PAS DU TOUT ensemble, c'est vite galère de si retrouver dans les noeuds.
Je te conseille donc d'oublier au plus vite cette façon hideuse de faire ta mise en page et de te pencher sur le bonheur des css.


Message édité par anapajari le 01-06-2006 à 12:14:15
n°1379166
krovomi
Posté le 01-06-2006 à 17:37:29  profilanswer
 

J'ai une question, est ce que l'on peut réaliser ceci :
 

Code :
  1. var elem_nom = document.createElement("<input type='text' id='ContactInputChamp' name='contacts' value='Nom...' onFocus='if (this.value=='Nom...') {this.value=''}' OnBlur='if (this.value=='') {this.value='Nom...'}' size=20>" );


 
Si je dis ca c'est parce que j'ai vu que l'on pouvait creer un input tout simple avec quelques parametres http://msdn.microsoft.com/workshop [...] lement.asp
 
J'ai essayé de faire ce que j'ai mis en haut mais il me pete l'erreur suivante :
 
Erreur : uncaught exception: [Exception... "String contains an invalid character"  code: "5" nsresult: "0x80530005 (NS_ERROR_DOM_INVALID_CHARACTER_ERR)"  location: "http://127.0.0.1/pharmaset/compte_rendu.php Line: 70"].
 
Merci  :hello:

n°1379171
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-06-2006 à 17:40:53  profilanswer
 

pas possible...
createElement prends le nom de balise pas une chaine de caractère.
Donc il faut que tu settes tes attributs un par un!
Et le onFocus n'est pas un attribut mais un event qui faut mettre sur ton input.
La façon la plus propre ( IMHO):

Code :
  1. inputNode.onfocus = function (event){
  2. if (this.value=='Nom...') {
  3.     this.value='';
  4. }
  5. }


 
edit: j'oubliais, pour le problème que tu vas surement rencontré pour setter le name de ton input, je te conseille cet excellent article: http://www.easy-reader.net/archive [...] entations/


Message édité par anapajari le 01-06-2006 à 17:41:48
n°1379556
krovomi
Posté le 02-06-2006 à 10:21:14  profilanswer
 

Bon ca marche bien, j'ai les inputs qui se mettent ou je veux, sauf que j'arrive pas à mettre le onFocus et OnBlur dans chaque input qui est créé à la volée.
De plus j'aimerai aussi savoir si il serait possible de mettre des epaces avec &nbsp; car j'ai essayé ceci, mais ca ne marche pas :
 

Code :
  1. document.getElementById("compte_rendu" ).insertBefore(document.createElement("&nbsp;" ), document.getElementById("Titre" ));

.
 
Merci

n°1379581
krovomi
Posté le 02-06-2006 à 10:42:23  profilanswer
 

de plus j'ai une question, comment appelles tu ta fonction :
 
    inputNode.onfocus = function (event){
    if (this.value=='Nom...') {
       this.value='';
    }
    }  
 
merci

mood
Publicité
Posté le 02-06-2006 à 10:42:23  profilanswer
 

n°1379586
anapajari
s/travail/glanding on hfr/gs;
Posté le 02-06-2006 à 10:47:29  profilanswer
 

alors
- ton &nbsp; c'est pas un tag ( mets du 'texte'), tu ne peux pas te servir de createElement, je te conseille plutot de te servir d'une css pour regler le margin left de ton 'Titre'
- tu 'appeles' pas la fonction, elle est invoqué automatiquement lors du focus sur l'input. Et il faut que tu places ce bout lors de la construction de inputNode ( qui doit etre elem_nom pour toi), de la même façon que si tu settais un attribut

n°1379636
krovomi
Posté le 02-06-2006 à 11:11:17  profilanswer
 

bon bah j'essaye de le mettre, je comprends rien du tout
 

Code :
  1. if (action == 'Ajouter')
  2.  {
  3.   var contact_champ = "contact_" + nombreChamp;
  4.   var profession_champ = "profession_" + nombreChamp;
  5.   function createElementWithName(type, name)
  6.   {
  7.    var element;
  8.    // First try the IE way; if this fails then use the standard way
  9.    if (document.all)
  10.     element = document.createElement('< '+type+' name="'+name+'" />');
  11.    else
  12.    {
  13.     element = document.createElement(type);
  14.     element.setAttribute('name', name);
  15.     contact_champ.onFocus = function (event)
  16.     {
  17.      if (this.value == 'Nom...')
  18.       this.value = '';
  19.     }
  20.     contact_champ.onBlur = function (event)
  21.     {
  22.      if (this.value == '')
  23.       this.value = 'Nom...';
  24.     }
  25.     profession_champ.onFocus = function (event)
  26.     {
  27.      if (this.value == 'Profession...')
  28.       this.value = '';
  29.     }
  30.     profession_champ.onBlur = function (event)
  31.     {
  32.      if (this.value == '')
  33.       this.value = 'Profession...';
  34.     }
  35.    }
  36.    return element;
  37.   }
  38.   var element_contact = createElementWithName("input", contact_champ);
  39.   var element_profession = createElementWithName("input", profession_champ);
  40.   document.getElementById("compte_rendu" ).insertBefore(document.createElement("br" ), document.getElementById("Titre" ));
  41.   document.getElementById("compte_rendu" ).insertBefore(createElementWithName("input", element_contact), document.getElementById("Titre" ));
  42.   document.getElementById("compte_rendu" ).insertBefore(createElementWithName("input", element_profession), document.getElementById("Titre" ));
  43.   nombreChamp++;
  44.  }


 
Je sais que ca n'est pas ca, mais je ne vois pas comment proceder  :fou:

n°1379643
anapajari
s/travail/glanding on hfr/gs;
Posté le 02-06-2006 à 11:15:43  profilanswer
 

Code :
  1. // First try the IE way; if this fails then use the standard way
  2.                     if (document.all)
  3.                         element = document.createElement('< '+type+' name="'+name+'" />');
  4.                     else
  5.                     {
  6.                         element = document.createElement(type);
  7.                         element.setAttribute('name', name);
  8.                     }
  9.                     element.onFocus = function (event)
  10.                     {
  11.                             if (this.value == 'Nom...')
  12.                                 this.value = '';
  13.                     }
  14.                     /*** pareil ensuite ***/

n°1379649
krovomi
Posté le 02-06-2006 à 11:18:02  profilanswer
 

bah c'est bien ce que je fais, c'est bizarre...

n°1379657
krovomi
Posté le 02-06-2006 à 11:20:15  profilanswer
 

oups, au temps pour moi ,j'ai zappé un truc :)

n°1379687
krovomi
Posté le 02-06-2006 à 11:45:29  profilanswer
 

Bah j'ai fais ca :
 

Code :
  1. if (action == 'Ajouter')
  2.  {
  3.   var contact_champ = "contact_" + nombreChamp;
  4.   var profession_champ = "profession_" + nombreChamp;
  5.   function createElementWithName(type, name)
  6.   {
  7.    var element;
  8.    // First try the IE way; if this fails then use the standard way
  9.    if (document.all)
  10.     element = document.createElement('< '+type+' name="'+name+'" />');
  11.    else
  12.    {
  13.     element = document.createElement(type);
  14.     element.setAttribute('name', name);
  15.     element.onFocus = function (event)
  16.     {
  17.      if (this.value == 'Nom...')
  18.       this.value = '';
  19.     }
  20.     element.onBlur = function (event)
  21.     {
  22.      if (this.value == '')
  23.       this.value = 'Nom...';
  24.     }
  25.     element.onFocus = function (event)
  26.     {
  27.      if (this.value == 'Profession...')
  28.       this.value = '';
  29.     }
  30.     element.onBlur = function (event)
  31.     {
  32.      if (this.value == '')
  33.       this.value = 'Profession...';
  34.     }
  35.    }
  36.    return element;
  37.   }
  38.   document.getElementById("compte_rendu" ).insertBefore(document.createElement("br" ), document.getElementById("Titre" ));
  39.   document.getElementById("compte_rendu" ).insertBefore(createElementWithName("input", contact_champ), document.getElementById("Titre" ));
  40.   document.getElementById("compte_rendu" ).insertBefore(createElementWithName("input", profession_champ), document.getElementById("Titre" ));
  41.   nombreChamp++;
  42.  }


 
là je pense que j'ai tout vérifié mais je ne vois pas ce qui cloche  :fou:

n°1379720
anapajari
s/travail/glanding on hfr/gs;
Posté le 02-06-2006 à 12:16:54  profilanswer
 

y'a un else qui finit mal:

Code :
  1. else
  2.                     {
  3.                         element = document.createElement(type);
  4.                         element.setAttribute('name', name);


Doit se terminer juste après le set Attribute, sinon les handlers d'event sont mis juste pour FF.
 
Et après c'est quoi ton problème? Parce que tu dis "Je vois pas ce qui cloche" mais comment veux tu que moi je le voies? :o

n°1379813
krovomi
Posté le 02-06-2006 à 14:03:37  profilanswer
 

bah le probleme c'est que meme quand je ferme mon accolade, il ne prend pas en compte mon onfocus ni mon onBlur c'est ca le pb :(

n°1379849
krovomi
Posté le 02-06-2006 à 14:16:10  profilanswer
 

Cette partie devrait fonctionner non ?
 

Code :
  1. if (document.all)
  2.     element = document.createElement('< '+ type +' name="'+ name +'" value"'+ value +'"/>');
  3.    else
  4.    {
  5.     element = document.createElement(type);
  6.     element.onFocus = function (event)
  7.     {
  8.      if (this.value == 'Nom...')
  9.      {
  10.       this.value = '';
  11.       element.setAttribute('value', '');
  12.      }
  13.     }
  14.     element.onBlur = function (event)
  15.     {
  16.      if (this.value == '')
  17.      {
  18.       this.value = 'Nom...';
  19.       element.setAttribute('value', 'Nom...');
  20.      }
  21.     }
  22.     element.setAttribute('name', name);
  23.    }

n°1379864
anapajari
s/travail/glanding on hfr/gs;
Posté le 02-06-2006 à 14:21:33  profilanswer
 

1er truc il te manque un type="text" a tes elements, c'est pas ça qui doit faire planter mais ça fera pas de mal.
Puis tu définis deux fois les handlers focus et blur pour chaque element alors que ce que tu voudrais c'est avoir deux handlers différents en fonction de l'input que tu construits. Commence par virer les deux derniers onfocus et onblur et reteste.
Ensuite tu as une erreur dans la console ou que Dalle?
Que se passe-t-il si tu mets un alert dans la fonction, plutot que de faire ton test? un truc dans le genre:

Code :
  1. element.onfocus = function(event){
  2.   alert('focus);
  3. }


n°1379869
anapajari
s/travail/glanding on hfr/gs;
Posté le 02-06-2006 à 14:23:13  profilanswer
 

krovomi a écrit :

Cette partie devrait fonctionner non ?


Que si tu es sous FF(si tout est bon), ton else est toujours mal placé [:spamafote]

n°1379892
krovomi
Posté le 02-06-2006 à 14:33:13  profilanswer
 

Bon, pour l'instant je ne teste que sous FF, et ce que j'avais fait précédemment ne marche pas non plus.
 
De plus, j'ai fais ceci :
 

Code :
  1. function createElementWithName(type, name, value)
  2. {
  3. var element;
  4. if (document.all)
  5.         element = document.createElement('< '+ type +' name="'+ name +'" value"'+ value +'"/>');
  6. else
  7. {
  8. element = document.createElement(type);
  9. element.onFocus = function (event)
  10. {
  11.         alert('onFocus');
  12. }
  13. element.onBlur = function (event)
  14. {
  15.  alert('onBlur');
  16. }
  17. element.setAttribute('name', name);
  18. }


 
et aucun alert ne sort...Bizarre comme tout !!!
Qu'est ce que tu entends par le 'else' mal pacé ? :sweat:


Message édité par krovomi le 02-06-2006 à 14:37:46
n°1379913
anapajari
s/travail/glanding on hfr/gs;
Posté le 02-06-2006 à 14:47:05  profilanswer
 

y'a pas de majuscules a onfocus et on blur... :o
 
Tiens un petit exemple vite fait:

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 createElementWithName(type, name, value)
  9. {
  10.   var element;
  11.   if (document.all)
  12.     element = document.createElement('< '+ type +' name="'+ name +'" value"'+ value +'"/>');
  13.   else
  14.   {
  15.     element = document.createElement(type);
  16.     element.setAttribute('value', value);
  17.   }
  18.   element.setAttribute('type', 'text');
  19.   element.setAttribute('name', name);
  20.   element.onfocus = function (event) {
  21.     this.value ='dedans';
  22.   }
  23.   element.onblur = function (event) {
  24.     this.value ='dehors';
  25.   }
  26.   document.getElementById('dest').appendChild(element);
  27. }
  28.   </script>
  29. </head>
  30. <body >
  31. <div id="dest"/>
  32. <input type="button" onclick="createElementWithName('input', 'test', 'test')"/>
  33. </body>
  34. </html>

n°1379924
krovomi
Posté le 02-06-2006 à 14:55:00  profilanswer
 

ah niquel mon sauveur, bah au moins j'aurais compris maintenant :)

n°1381846
krovomi
Posté le 06-06-2006 à 10:37:22  profilanswer
 

J'ai une autre question, mais celle-ci est plus basée sur la CSS, lorsque j'ai mes 2 inputs qui s'ajoutent les uns en dessous des autres, comment je peux faire pour générer via la CSS, le placement de ceux-ci, à savoir que le top sera dynamique, n'y a t'il pas une facon de faire pour gérer de la CSS dynamiquement ?
Merci

n°1381880
krovomi
Posté le 06-06-2006 à 11:08:43  profilanswer
 

je resume pour ceux qui n'ont pas suivi :
 
 
J'ai une autre question, mais celle-ci est plus basée sur la CSS, j'ai 2 inputs de type text sur une meme ligne et j'ai un autre input de type bouton.Lorsque je clique sur le bouton y a deux autres inputs de types texte qui s'ajoutent automatiquement en dessous des deux premiers via du Javascript, et cela indefiniment.
Ma question est la suivante : Comment serait il possible de gerer le positionnement via la CSS de tous ces inputs vu que d'une l'id des inputs est du type "contact_" + i(variable en JS), ou i est un chiffre incrementé, donc du coup impossible d'utiliser l'id via la css du type input#contact_1, car ca serait trop galere de positionner le top pour chacun d'eux, et pareil pour une class.
Donc existe t'il un moyen de faire cela ?
Merci


Message édité par krovomi le 06-06-2006 à 11:13:49
n°1381941
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-06-2006 à 11:53:51  profilanswer
 

c'est pas plus clair :o
Mais je vais le tenter: Tu cherches à modifier la proriété top du style des inputs que tu ajoutes dynamiquement, cela sans définir "en dur" leur css.
Is that right?
 
Dans ton bouzin de création de noeud, tu as accès à toutes les proriétés de style de tes noeuds via:

Code :
  1. tonNoeud.style.laPropriété


A toi de les setter correctement en fonction du nombre d'inputs qui sont au dessus!

n°1381948
krovomi
Posté le 06-06-2006 à 11:59:59  profilanswer
 

euh oui en effet il s'agit de ca en effet, merci :)

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

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