Bonjour,
J'ai une page html qui est un tableau (lignes x colonnes) et je voudrais sortir sous forme excel les lignes que l'utilisateur aura coché.
J'ai donc un formulaire avec plein de checkbox.Chacune est en tête d'une ligne dans la table.
Voici le onclick de mon formulaire : "getChecked(this);this.parentNode.submit()"
Le submit() lance un script Perl défini dans le "action" du formulaire.
Lorsque l'on clique une ou plusieurs checkbox, puis que l'on clique sur "submit",cela lance un petit script javascript qui récupère les indices des lignes cochées, construis un input de type hidden que j'ajoute au formulaire puis qui lance un script Perl par la commande javascript this.parentNode.submit()
Au premier tour tout va bien.
L'utilisateur sélectionne les lignes 3 et 4 : elles sont bien retrouvées dans le document Excel généré.
L'utilisateur ajoute ensuite la ligne 8 puis refait un submit : c'est toujours les lignes 3 et 4 qui sortent dans le document Excel !
L'utilisateur décoche tout puis coche la ligne 1 : c'est encore les lignes 3 et 4 qui sortent !
Comment se fait-il que mon getChecked(this) ne prenne pas en compte les nouvelles lignes cochées ?
Je pourrais faire un script pour tout décocher mais si mon utilisateur a coché 25 éléments, sorti une première feuille Excel, puis veut ajouter 5 éléments pour sortir une deuxième feuille, je ne veux pas lui faire tout recocher ensuite !!!
Donc ma principale question est pourquoi mon script ne prend pas en compte les cases cochées/décochées après le premier submit.
Voici le code ma fonction.
Le paramètre "elt" en argument est le formulaire lui-même.
Merci pour vos lumières !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 function getChecked(elt) { var checkboxes = document.getElementsByName('chkbx') ; var tab = new Array ; for (var i=0; i<checkboxes.length; i++) { if ( checkboxes[i].checked == true ) tab.push(checkboxes[i].value) ; } var ret = tab.join('|') ; var field = document.createElement("input"); field.type = "hidden"; field.name = "list" ; field.value = ret ; elt.appendChild(field) ; }
Partager