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 :

Attacher des évènements


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut Attacher des évènements
    Salut,
    J'ai lu ceci qu'il faut faire ainsi pour attacher des évènements aux éléments d'une page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function addEvent(e, evType, fn) {
      if(e.addEventListener) {
        e.addEventListener(evType, fn, false); // sans capture
        return true;
      } else if (e.attachEvent) {
        var r = e.attachEvent("on"+evType, fn);
        return r;
      } else { return false; }
    }
     
    addEvent(window, 'load', fonction1);
    Avec ce code comment avec ceci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form id="census" onsubmit="return validForm();">
    Merci d'avance...

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function traitement(event) {
       return validForm();
    }
    var formulaire = document.getElementById('census');
    addEvent(formulaire, 'submit', traitement);
    Tu peux coder la fonction de manière anonyme directement ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var formulaire = document.getElementById('census');
    addEvent(formulaire, 'submit', function(event) {
      return validForm(); // ou placer directement ici le code de validation
    });

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    marcha,
    la fonction est bel et bien attachée mais quand je soumets le formulaire, validForm() est lancée et même si les données du formulaire sont erronées, le formulaire est soumis et ses données sont envoyées vers la page php. Or ce que je veux, c'est soumettre le formulaire si les données sont bonnes et dans le cas contraire rester sur la page du formulaire.

  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
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par okoweb
    même si les données du formulaire sont erronées, le formulaire est soumis et ses données sont envoyées vers la page php.
    Ben dans ce cas, c'est ta fonction de vérification qui est erronée et c'est difficile à déterminer sans le code
    De plus, si l'on se fie à ton premier message, tu semblais demander d'attacher un événement...

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Ben dans ce cas, c'est ta fonction de vérification qui est erronée et c'est difficile à déterminer sans le code
    Voici ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function validForm(){
        missing_fields = '';
     
        if(document.getElementById("nom").value == ""){
            missing_fields += "\n 'Nom'";
        }
     
        if(missing_fields == ""){ return true;}
        else{
            alert("Les champs suivants doivent etre remplis :" + missing_fields);
            return false;
        }
    }
    Merci d'avance...

  6. #6
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Sorry c'est ma faute, dans le cas de addEventListener
    la valeur de retour de la fonciton qui traite l'évènement
    n'a pas d'influance.

    Il faut utiliser preventDefault pour empêcher l'effet par
    défaut de l'évènement (dans ce cas, la soumission du form)

    Et il faut traiter le cas IE à part, comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    addEvent(formulaire, 'submit', function(event) {
      if(!validForm()) {
    	var event = event || window.event; // Pour IE
    	if (event.preventDefault) { // Standard
    		event.preventDefault();
    	} else { // Pour IE
    		event.returnValue = false;
    	}	
      }
    });
    Attention lors de tes tests. La moindre erreur javascript
    fait que le formulaire sera posté.

    J'ajouterai que si tu es souvent confronté à ce genre de
    problème de compatibilité, regarde pour utiliser une librairie comme JQuery par exemple.

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par marcha Voir le message
    Sorry c'est ma faute, dans le cas de addEventListener
    la valeur de retour de la fonciton qui traite l'évènement
    n'a pas d'influance.

    Il faut utiliser preventDefault pour empêcher l'effet par
    défaut de l'évènement (dans ce cas, la soumission du form)

    Et il faut traiter le cas IE à part, comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    addEvent(formulaire, 'submit', function(event) {
      if(!validForm()) {
    	var event = event || window.event; // Pour IE
    	if (event.preventDefault) { // Standard
    		event.preventDefault();
    	} else { // Pour IE
    		event.returnValue = false;
    	}	
      }
    });
    Attention lors de tes tests. La moindre erreur javascript
    fait que le formulaire sera posté.

    J'ajouterai que si tu es souvent confronté à ce genre de
    problème de compatibilité, regarde pour utiliser une librairie comme JQuery par exemple.
    Exact merci...

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

Discussions similaires

  1. [POO] Liste des évènements attachés à un élément html
    Par daronmaster dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 15/01/2009, 13h28
  2. Voir la liste des fonctions attaché à un évènement
    Par CAML dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/10/2006, 21h32
  3. Gestion des évènements lors d'un clique sur une image.
    Par yoghisan dans le forum Débuter
    Réponses: 7
    Dernier message: 23/06/2005, 19h04
  4. Créer des événements
    Par thebeb dans le forum MFC
    Réponses: 8
    Dernier message: 04/02/2005, 16h45

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