Bonjour,

J'ai un formulaire html assez complexe avec des tableaux imbriqués dont la taille peut varier avec des boutons javascript pour cloner / supprimer / ajouter / deplacer des lignes.

voilà un code simplifié de la page html :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<table class="tab1">
 <tbody >
  <tr>
   <td>
    <input value="nom0" name="tab1[0][nom]">
    <input value="com0" name="tab1[0][com]">
    <tr>
     <td>
      <table  class="tab2">
      <tbody>
        <tr>
         <td>
          <input value="nom00" name="tab1[0][tab2][0][nom]">
          <input value="com00" name="tab1[0][tab2][0][com]">
          <table class="tab3">
           <tbody >
            <tr>
             <td><input value="nom000" name="tab1[0][tab2][0][tab3][0][nom]"></td>
             <td><select name="tab1[0][tab2][0][tab3][0][sz]"><option value="1">1</option><option selected="selected" value="2">2</option></select></td>
            </tr>
            <tr>
             <td><input value="nom000" name="tab1[0][tab2][0][tab3][1][nom]"></td>
             <td><select name="tab1[0][tab2][0][tab3][1][sz]"><option value="1">1</option><option selected="selected" value="2">2</option></select></td>
            </tr>
           </tbody>
          </table>
         </td>
        </tr>
        <tr>
         <td>
          <input value="nom01" name="tab1[0][tab2][1][nom]">
          <input value="com01" name="tab1[0][tab2][1][co]">
          <table>
           <tbody>
            <tr>
             <td><input value="nom010" name="tab1[0][tab2][1][tab3][0][nom]"></td>
             <td><select name="tab1[0][tab2][1][tab3][0][sz]"><option value="1">1</option><option selected="selected" value="2">2</option></select></td>
            </tr>
            <tr>
             <td><input value="nom011"  name="tab1[0][tab2][1][tab3][1][nom]"></td>
             <td><select name="tab1[0][tab2][1][tab3][1][sz]"><option value="1">1</option><option selected="selected" value="2">2</option></select></td>
            </tr>
           </tbody>
          </table>
         </td>
        </tr>
       </tbody>
      </table>   
     </td>
    </tr>
   </td>
  </tr>
 </tbody>
</table>
Après action des boutons javascript il faut que je parcours le tableau pour redonner les bons indices au champs du formulaire.
Par exemple, si je clone une ligne, je me retrouve avec des noms en double, ce qui ne va pas au moment de l'envoie du formulaire.

Donc j'ai commencé à coder pour renommer, je peux renommer en utilisant des regexp par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
...
var i=0;
while(i<nombrelignes) {
 if (nomclasstableau === "tab1") {
  elts = lignes[i].getElementsByTagName("input");
   for (j=0 ; j<elts.length; j++) {
    nomelementavant = elts[tab2].name;
    resultat = nomelementavant.search(/\[\d+\]/);
     if(resultat != -1) {
    nomelementapres = nomelementavant.replace(/\[\d+\]/,"\["+i+"\]")
   }
  }
 }
}
Dans mon formulaire je melange input et select.
J'ai également des inputs en readonly sans attribut name.

Comment selectionner pour une ligne de tableau donnée tout les elements du formulaire qui ont un attribut "name" ?
ou peut-être tout les noms commencant par "tab1[i]" ?

Enfin, si vous avez une meilleures idée, moins laborieuse, je suis à l'écoute.

merci