Selectionner tout les champs d'un formulaire dans un element
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:
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:
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