IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Ajouter un événement onsubmit à la volée


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Vow
    Vow est déconnecté
    Membre éprouvé Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Par défaut 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 : 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
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    C'est donc pour ça que je viens appeler au secours chez mes amis DVP
    Merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    lut VOw
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docSel.name = 'selItem[]';
    là ça va coincer ...

    Un peu de lecture sur le sujet
    http://www.developpez.net/forums/d53...ight=spacefrog
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Vow
    Vow est déconnecté
    Membre éprouvé Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Par défaut
    Coucou la grenouille

    Donc j'imagine spécialement à ce soucis ?
    http://www.developpez.net/forums/d53...m/#post3199144

    J'utilise IE6 pour ma part, en pensant bien que si ça peut fonctionner là, ça ne sera pas pire après
    Oui parce que j'ai oublié de dire que je testais mes codes en premier sur IE6... Et donc que mon code d'ajout d'événement du submit ne fonctionne pas sur ce navigateur.

    En tout cas, au niveau du nom des checkboxes, ça passe très bien. Alors peut-être sur IE7, ça ne le fait pas puisque tu soulignes le problème.
    Au pire je change la ligne par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docSel.setAttribute(name, 'selItem[]');
    ce qui ne devrait pas poser de soucis à priori.

    De toute façon, mon problème ne vient pas de là.
    Mais merci d'avoir répondu

    PS : Comme d'hab, je rapporte des problèmes un peu bizarroïdes

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    addEvent(window, 'load', function () {
    		addEvent(formulaire, 'submit', selectInForm);
    	});
    es-tu sûr que formulaire est bien défini lorsque tu appelles addEvent ? Parce que selon le code que tu montres, ça ne semble pas être le cas
    Ensuite, attention, manifestement, selectInForm attend un paramètre (bien qu'il ne semble pas utilisé...) dans ce cas, la syntaxe serait plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    addEvent(window, 'load', function () {
    		addEvent(formulaire, 'submit', function(){selectInForm(param)});
    	});
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Vow
    Vow est déconnecté
    Membre éprouvé Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Par défaut
    C'est ça quand on modifie ses fonctions à la volée pour les mettre sur le forum
    En réalité, il n'y a pas de paramètre dans ma fonction "selectInForm".
    Puis mon test "addEvent(formulaire, 'submit', function(){ alert('ok'); });" ne passait pas non plus, donc...

    Réponse à l'autre question : oui la variable que j'ai appelé ici "formulaire" (qui est en fait plutôt du genre "document.forms['xxx']" dans mon code) existe bien.
    J'avais testé ma fonction addEvent en utilisant "document.getElementsByName('xxx')[0]".

    Dans tous les cas, l'utilisation du addEvent avec l'événement "click" n'aurait pas fonctionné si l'objet n'existait pas. Or là, ça fonctionne bien.

    Merci à toi

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    je suppose que si tu mest des crochets au name c'est pour recupérer un array coté serveur ...
    le souci ne se posera à priori pas coté client
    mais sous IE on ne peut pas attiebuer un name en runtime autrement que par la methode dans les contributions
    donc même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docSel.setAttribute(name, 'selItem[]');
    est vain

    lors du submit les elements ne seront pas reconnu coté serveur ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter un événement...
    Par Spack dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/02/2006, 19h56
  2. [débutant]Ajout d'événement
    Par jsatla dans le forum MFC
    Réponses: 4
    Dernier message: 04/11/2005, 12h19
  3. Ajout d'événement
    Par olivierlsf dans le forum Composants VCL
    Réponses: 1
    Dernier message: 30/09/2005, 17h16
  4. Ajout d'événement
    Par ArkAng3 dans le forum C++Builder
    Réponses: 4
    Dernier message: 04/08/2005, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo