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

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Help Javascript -> Formulaire dynamique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Help Javascript -> Formulaire dynamique

n°1863441
backdafuck​up
Back to da old skool
Posté le 19-03-2009 à 10:46:12  profilanswer
 

Bonjour,
 
Ca faisait longtemps que j'avais pas d'asp et de JS, mais la, pour des questions de maintenance, je dois m'y remettre.
Je poste dans la cat HTML/CSS/JS parce qu'à mon avis, le problème vient de là (c'est sûr même).
 
Alors voilà, la base est là. Une requête SQL qui affiche une liste de tables (je sais c'est pas propre, mais SVP, ça n'est pas la question aujourd'hui, c'est du vieux code, j'ai pas le temps de tout refaire pour faire du code propre, c'est un problème urgent) contenant des champs input avec des "name" incrémentés (de type "designation_0" ).
 
La suite après ce code.
 

Code :
  1. <div id="div_fact">
  2.         <%
  3.          Set Connect = Server.CreateObject("ADODB.Connection" )
  4.          Connect.Open Application("DSN_Chrono_SQL" )
  5.          Requete = _
  6.           "SELECT * " & _
  7.           "FROM Devis D " & _
  8.           "INNER JOIN Devis_Details DD ON D.NumeroAutoDevis = DD.NumeroAutoDevis " & _
  9.           "WHERE D.NDevis = " & NumeroDevis & " "
  10.          Set Curseur = Server.CreateObject("ADODB.RecordSet" )
  11.          Curseur.Open Requete, Connect, 3, 3
  12.          Dim i
  13.          i = 0
  14.          if not curseur.eof then
  15.           while not curseur.eof
  16.           %>
  17.            <div id="div_lig_fact_<%=i%>" style="display: block;">
  18.             <table id="tbl_<%=i%>" width="100%" align="center" cellspacing="0" cellpadding="0" border="0">
  19.              <tr>
  20.               <td width="380"  align="left" style="padding-left:2px;">
  21.                <input type="text" name="designation_<%=i%>" value="<%=Curseur("Designation" )%>" maxlength="60" style="width:98%;font-weight:bold;color:#<%=Application("CouleurFond2" )%>;">
  22.               </td>
  23.               <td width="120" align="center" style="padding-right:2px;">
  24.                <input type="text" name="RefCde_<%=i%>" value="<%%>" maxlength="20" style="text-align:left;width:98%;font-weight:bold;color:#<%=Application("CouleurFond2" )%>;">
  25.               </td>
  26.               <td width="100" align="center" style="padding-right:2px;">
  27.                <input type="text" name="BonLivraison_<%=i%>" value="<%%>" maxlength="10" style="text-align:left;width:98%;font-weight:bold;color:#<%=Application("CouleurFond2" )%>;">
  28.               </td>
  29.               <td width="100" align="center" style="padding-right:2px;">
  30.                <input type="text" onblur="FormateDate(this.form.DateLivraison);" name="DateLivraison_<%=i%>" value="<%%>" maxlength="10" style="text-align:center;width:98%;font-weight:bold;color:#<%=Application("CouleurFond2" )%>;">
  31.               </td>
  32.               <td width="100" align="center" style="padding-right:2px;">
  33.                <input type="text" name="PUHT_<%=i%>" value="<%%>" maxlength="10" style="text-align:right;width:98%;font-weight:bold;color:#<%=Application("CouleurFond2" )%>;">
  34.               </td>
  35.               <td width="80" align="center" style="padding-right:2px;">
  36.                <input type="text" name="Qte_<%=i%>" value="<%%>" maxlength="10" style="text-align:right;width:98%;font-weight:bold;color:#<%=Application("CouleurFond2" )%>;">
  37.               </td>
  38.               <td width="100" align="center" style="padding-right:2px;">
  39.                <input type="text" name="montantHT_<%=i%>" value="<%=Curseur("MonHTEuro" )%>" maxlength="10" style="text-align:right;width:98%;font-weight:bold;color:#<%=Application("CouleurFond2" )%>;">
  40.               </td>
  41.               <td>
  42.                <a href="javascript:SupprimerLigne(<%=i%> );"><img src="./images/supprimer.gif" alt="Supprimer cette ligne" title="Supprimer cette ligne" border="0" /></a>
  43.               </td>
  44.              </tr>
  45.             </table>
  46.            </div>
  47.           <%
  48.            i = i + 1
  49.            curseur.movenext
  50.           wend
  51.           %><input type="hidden" id="max_lignes" name="max_lignes" value="<%=i - 1%>" /><%
  52.          else
  53.          end if
  54.         %>
  55.         </div>


 
En dessous de ces tables, j'ai un bouton "Ajouter une ligne" qui ajoute donc une ligne vide, même syntaxe que le code ci-dessus :  
 

Code :
  1. <script type="text/javascript">
  2.         function AjouterLigne()
  3.         {
  4.          var maindiv;
  5.          var newdiv;
  6.          var hid_maxlignes;
  7.          var i = 0;
  8.          var content;
  9.          //maindiv = document.forms[0].div_fact;
  10.          maindiv = document.getElementById('div_fact');
  11.          hid_maxlignes = document.getElementById('max_lignes');
  12.          i = parseInt(hid_maxlignes.value) + 1;
  13.          //alert(hid_maxlignes.value);
  14.          newdiv = document.createElement('div');
  15.          newdiv.id = 'div_lig_fact_' + i;
  16.          /* Ajout du contenu */
  17.          //content = '<div id="div_lig_fact_'+i+'">';
  18.          content = '<table id="tbl_'+i+'" width="100%" align="center" cellspacing="0" cellpadding="0" border="0">';
  19.          content += '<tr>';
  20.          content += '<td width="380" align="left" style="padding-left:2px;">';
  21.          content += '<input type="text" name="designation_'+i+'" maxlength="60" style="width:98%;font-weight:bold;color:#<%=Application("CouleurFond2" )%>;">';
  22.          content += '</td>';
  23.          content += '<td width="120" align="center" style="padding-right:2px;">';
  24.          content += '<input type="text" name="RefCde_'+i+'" maxlength="20" style="text-align:left;width:98%;font-weight:bold;color:#<%=Application("CouleurFond2" )%>;">';
  25.          content += '</td>';
  26.          content += '<td width="100" align="center" style="padding-right:2px;">';
  27.          content += '<input type="text" name="BonLivraison_'+i+'" maxlength="10" style="text-align:left;width:98%;font-weight:bold;color:#<%=Application("CouleurFond2" )%>;">';
  28.          content += '</td>';
  29.          content += '<td width="100" align="center" style="padding-right:2px;">';
  30.          content += '<input type="text" onblur="FormateDate(this.form.DateLivraison);" name="DateLivraison_'+i+'" maxlength="10" style="text-align:center;width:98%;font-weight:bold;color:#<%=Application("CouleurFond2" )%>;">';
  31.          content += '</td>';
  32.          content += '<td width="100" align="center" style="padding-right:2px;">';
  33.          content += '<input type="text" name="PUHT_'+i+'" maxlength="10" style="text-align:right;width:98%;font-weight:bold;color:#<%=Application("CouleurFond2" )%>;">';
  34.          content += '</td>';
  35.          content += '<td width="80" align="center" style="padding-right:2px;">';
  36.          content += '<input type="text" name="Qte_'+i+'" maxlength="10" style="text-align:right;width:98%;font-weight:bold;color:#<%=Application("CouleurFond2" )%>;">';
  37.          content += '</td>';
  38.          content += '<td width="100" align="center" style="padding-right:2px;">';
  39.          content += '<input type="text" name="montantHT_'+i+'" maxlength="10" style="text-align:right;width:98%;font-weight:bold;color:#<%=Application("CouleurFond2" )%>;">';
  40.          content += '</td>';
  41.          content += '<td>';
  42.          content += '<a href="javascript:SupprimerLigne('+i+');"><img src="./images/supprimer.gif" alt="Supprimer cette ligne" title="Supprimer cette ligne" border="0" /></a>';
  43.          content += '</td>';
  44.          content += '</tr>';
  45.          content += '</table>';
  46.          //newdiv.insertAdjacentHTML('BeforeEnd',content);
  47.          newdiv.innerHTML = content;
  48.          maindiv.appendChild(newdiv);
  49.          hid_maxlignes.value = i;
  50.         }
  51.         function SupprimerLigne(idligne)
  52.         {
  53.          var lig;
  54.          var tbl;
  55.          var main;
  56.          main = document.getElementById('div_fact');
  57.          lig = document.getElementById('div_lig_fact_'+idligne);
  58.          main.removeChild(lig);
  59.          lig.innerHTML = "";
  60.         }
  61.        </script>


 
Jusque là tout va bien, tout marche. Les lignes s'ajoutent se suppriment sans soucis (pas d'erreurs js en tout cas).
Le seul pb est que quand je valide mon formulaire (validation en post) et que je récupère les données sur une deuxième page, les champs générés à partir du javascript ne remontent pas.
 
Voilà le code ASP de récupération, si jamais qqn y trouve une erreur (je passe volontairement les déclarations, mais elles y sont dans mon code).
 

Code :
  1. NumeroClient = Request.Form("NumClient" )
  2. NumAdrFact = Request.Form("NumAdrFact" )
  3. TypeFacture = Request.Form("TypeFacture" )
  4. TxTva = Request.Form("txTva" )
  5. DateFacture = Request.Form("DateFacture" )
  6. DateLimitePaiement = Request.Form("DateLimitePaiement" )
  7. Commentaires = PreparePourBdd(Request.Form("commentaires" ))
  8. MaxLignes = Request.Form("max_lignes" )
  9. Response.Write("Max : " & MaxLignes & "<br />" )
  10. for i = 0 to MaxLignes
  11.  Designation = PreparePourBdd(Request.Form("designation_" & i))
  12.  PrixUnitaire = Request.Form("PUHT_" & i)
  13.  Quantite = Request.Form("Qte_" & i)
  14.  MontantHT = Request.Form("MontantHT_" & i)
  15.  RefCommande = PreparePourBdd(Request.Form("RefCde_" & i))
  16.  DateLivraison = Request.Form("DateLivraison_" & i)
  17.  BonLivraison = PreparePourBdd(Request.Form("BonLivraison_" & i))
  18.  Response.Write("-----------------<br />" )
  19.  Response.Write(i & "<br />" )
  20.  Response.Write("Designation : " & Designation & "<br />" )
  21.  Response.Write("PrixUnitaire : " & PrixUnitaire & "<br />" )
  22.  Response.Write("Quantite : " & Quantite & "<br />" )
  23.  Response.Write("MontantHT : " & MontantHT & "<br />" )
  24.  Response.Write("RefCommande : " & RefCommande & "<br />" )
  25.  Response.Write("DateLivraison : " & DateLivraison & "<br />" )
  26.  Response.Write("BonLivraison : " & BonLivraison & "<br />" )
  27.  Response.Write("-----------------<br />" )
  28.  Response.Write("<br />" )
  29. next


 
Voilà, j'aurais vraiment besoin d'un coup de main.... aujourd'hui... ( [:backdafuckup]  )
 
Merci d'avance...

mood
Publicité
Posté le 19-03-2009 à 10:46:12  profilanswer
 

n°1863455
kao98
...
Posté le 19-03-2009 à 11:13:38  profilanswer
 

Il manque pas un <form ?
 
J'ai lu un peu vite, je pense qu'il y a bien un form avant le code que tu as posté !?


Message édité par kao98 le 19-03-2009 à 11:17:59

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1863458
backdafuck​up
Back to da old skool
Posté le 19-03-2009 à 11:19:20  profilanswer
 

Malheureusement non... Il y est et encadre bien l'ensemble de ma page (pour faire large).
 
De tout façon, il marche, puisque les valeurs qui sont générées par la base de données sont récupérées correctement.
 
Il n'y a que celles générées par le JS qui ne passent pas...
 
Et si je passe le form en GET, ben les valeurs générées en JS ne sont pas embarquées !
 
La, je comprends plus...

n°1863460
kao98
...
Posté le 19-03-2009 à 11:22:22  profilanswer
 

Apparemment, les inputs sont bien ajoutés au code html, les objets dom associés ne sont pas ajouté à l'objet représentant le form.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1863464
backdafuck​up
Back to da old skool
Posté le 19-03-2009 à 11:29:10  profilanswer
 

Et donc ? Comment on les ajoute au form ?
 
En fait c'est la première fois que j'utilise les objets createElement et appendChild.
 
Ya quelques temps j'utilisais plutot insertAdjacentHTML...
 
C'est ça qui foire ?

n°1863526
backdafuck​up
Back to da old skool
Posté le 19-03-2009 à 13:30:05  profilanswer
 

ch'ti up parce que la je galère toujours quand même....
 
Merci :D


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

  Help Javascript -> Formulaire dynamique

 

Sujets relatifs
javascriptemail avec formulaire
Projet Handicap et Accessibilité (really need help)Probleme parametre de fonction javascript
addslashes et htmlentities : javascript qui s'execute quand mêmeDoctype et javascript
Help ... php+flickr : recuperer le secret code![Outlook 2003] formulaire => affichage d'un calendrier pour champ date
Question de noob html, css... (javascript??)[help] Problème Visual C++
Plus de sujets relatifs à : Help Javascript -> Formulaire dynamique


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