Help Javascript -> Formulaire dynamique

Help Javascript -> Formulaire dynamique - HTML/CSS - Programmation

Marsh Posté le 19-03-2009 à 10:46:12    

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

Reply

Marsh Posté le 19-03-2009 à 10:46:12   

Reply

Marsh Posté le 19-03-2009 à 11:13:38    

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
Reply

Marsh Posté le 19-03-2009 à 11:19:20    

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

Reply

Marsh Posté le 19-03-2009 à 11:22:22    

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
Reply

Marsh Posté le 19-03-2009 à 11:29:10    

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 ?

Reply

Marsh Posté le 19-03-2009 à 13:30:05    

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

Reply

Sujets relatifs:

Leave a Replay

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