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 :
Après action des boutons javascript il faut que je parcours le tableau pour redonner les bons indices au champs du formulaire.
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>
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 :
Dans mon formulaire je melange input et select.
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+"\]") } } } }
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
Partager