Ajouter un événement onsubmit à la volée
Bonjour
Je vais un peu expliquer le contenu de cette partie mon projet pour commencer.
En gros, il s'agit d'ensemble de scripts PHP, avec tout pleins de fonctions PHP et quelques fonctions Javascript.
Parmi les fonctions PHP, celle qui gère le multipage de tableau. Elle fonctionne bien en temps normal, les checkbox de chaque ligne sélectionnée d'un tableau étant sauvegardées en revenant sur la page en question. Tout ceci passant en utilisant un submit du formulaire en question.
Là où ça se complique, c'est lorsque j'utilise un objet DataGrid de la librairie Dojo pour formater le tableau (entre autre). J'ai réussi à pouvoir récupérer les données sélectionnées via une fonction qui crée une "checkbox invisible" pour chaque élément sélectionné.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| function selectInForm(myForm)
{
var items = grid0.selection.getSelected();
if(items.length)
{
dojo.forEach(items, function(selectedItem) {
if(selectedItem !== null)
{
var docSel = document.createElement('INPUT');
docSel.setAttribute('type', 'hidden');
docSel.name = 'selItem[]';
docSel.value = grid0.store.getValues(selectedItem, \"DOC_ID\");
docSel.setAttribute('checked', true);
myForm.appendChild(docSel);
}
});
}
} |
Bref, ce n'est toujours pas le soucis à mon avis.
Pour appeler cette fonction, j'utilise une de mes fonctions "génériques" :
Code:
1 2 3 4 5 6 7
| function addEvent (obj, evName, fct)
{
if (obj.attachEvent)
obj.attachEvent("on" + evName, fct);
else
obj.addEventListener(evName, fct, false);
} |
Ce qui donne en gros dans mon cas :
Code:
1 2 3
| addEvent(window, 'load', function () {
addEvent(formulaire, 'submit', selectInForm);
}); |
Comme ça ne fonctionnait pas (ça ne rentre même pas dans la fonction), j'ai testé en changeant le addEvent submit par le "click". Ca fonctionne bien, mais évidemment je ne peux pas utiliser cette solution puisqu'inconvenable à la situation : création de checkbox même quand on désélectionnait les lignes, ce qui est logique puisque l'événement était déclenché à chaque clic sur le tableau.
Même en testant :
Code:
addEvent(formulaire, 'submit', function(){ alert('ok'); });
ça n'est pas pris en compte.
Là je me prends un peu trop la tête dessus, les recherches n'emmènent rien, les collègues n'aident pas pour se concentrer correctement sur ça, bref... le caca :aie:
C'est donc pour ça que je viens appeler au secours chez mes amis DVP ;)
Merci d'avance !