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

jQuery Discussion :

$(#elem).attr() : plusieurs actions sur le onChange


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Par défaut $(#elem).attr() : plusieurs actions sur le onChange
    Bonjour,
    J'utilise pour appliquer des vérfications à certains champs d'un formulaire.
    Malheureusement certains de ces champs on déjà des évenements sur le onChange ...
    Existe t il un moyen d'ajouter une action sur cet événement sans effacer l'action déjà présente ?

    Meric par avance.

  2. #2
    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 : 55
    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
    Il ne faut pas passer par attr() pour gérer les événements avec jQuery !
    La gestion des événements par la bibliothèque est beaucoup plus efficace et permet d'attacher autant d'actions que tu veux pour un même événement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $('input').change(fonction1);
    $('input').change(fonction2);
    http://api.jquery.com/category/events/
    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

  3. #3
    Membre éclairé Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Par défaut
    Ben que dire ...

    Merci ..

  4. #4
    Membre éclairé Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Par défaut
    Ha si ...

    Comment passer des paramètres à cette fonction ?
    Je m'explique, après chargement, je veux appliquer des tests sur tous les champs obligatoires que j'ai dans un tableau.
    Si je fais ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $(function(){	
    	for(i=0; i < aMandatories.length; i++ ) {
    		elem = aMandatories[i];
    		$("#" + elem).css({borderLeft : "2px solid coral"}).css({borderRight : "2px solid coral"});	
    		$("#" + elem).change(function() { verifLength(elem,2,'Champ obligatoire')} );
    	}
    });
    elem est undfined pour verifLength()

    et si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $(function(){	
    	for(i=0; i < aMandatories.length; i++ ) {
    		elem = aMandatories[i];
    		$("#" + elem).css({borderLeft : "2px solid coral"}).css({borderRight : "2px solid coral"});	
    		$("#" + elem).change( verifLength( elem,2,'Champ obligatoire')} );
    	}
    });
    verifLength() joué au chargement de la page pour tous les champs.
    Il doit y avoir un truc que je zap genre un passage par référence

  5. #5
    Membre éclairé Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Par défaut
    Ok je reviens à la charge ...

    en fait mon problème est un problème de persistance/portée des variables.
    je m'explique, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $(function(){	
    	$('select').append( new Option("- - CHOISISSEZ - -","") );
    	for(i=0; i < aMandatories.length; i++ ) {
    		elem = aMandatories[i];
    		$("#" + elem).css({borderLeft : "2px solid coral"}).css({borderRight : "2px solid coral"});	
    		$("#" + elem).change(function() { verifLength(elem,2,'Champ obligatoire')} );
    	}
    });
    L'idée est donc de mettre un test sur le onChange des champs obligatoires listés dans mon tableau aMandatories[i]. Mais quelque soit le champ modifier, la methode verifLength est appelée avec elem qui vaut la dernière valeur de mon champ et non l'élément i de mon tableau ...

    Merci pour votre aide ...

  6. #6
    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 : 55
    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
    C'est normal et expliqué dans la : Comment attribuer à des objets un onclick faisant appel à une variable de boucle ?
    Avec jQuery, tu peux passer par prop() ou data() pour affecter des propriétés spécifiques à un objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $(function(){	
    	$('select').append( new Option("- - CHOISISSEZ - -","") );
    	for(i=0; i < aMandatories.length; i++ ) {
    		elem = aMandatories[i];
    		$("#" + elem).prop('rang', i);
    		$("#" + elem).css({borderLeft : "2px solid coral"}).css({borderRight : "2px solid coral"});	
    		$("#" + elem).change(function() { verifLength(elem,2,'Champ obligatoire')} );
    	}
    });
    et dans la fonction verifLength, tu testes
    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

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

Discussions similaires

  1. [POO] 2 actions sur le onchange
    Par Yein-Yein dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/01/2008, 08h52
  2. plusieurs action sur un meme bouton
    Par francksilvagni dans le forum Flash
    Réponses: 8
    Dernier message: 04/05/2007, 17h54
  3. 2 actions sur evenement onchange sur champ Select
    Par falz222 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/08/2006, 20h59
  4. [Spring MVC] Plusieurs actions sur le même formulaire
    Par aloha dans le forum Spring Web
    Réponses: 3
    Dernier message: 26/08/2006, 15h22
  5. [struts]plusieurs actions sur 1 JSP sans DispatchAction
    Par Le Marlou dans le forum Servlets/JSP
    Réponses: 15
    Dernier message: 23/03/2005, 14h10

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