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

Bibliothèques & Frameworks Discussion :

dojo - onChange


Sujet :

Bibliothèques & Frameworks

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut dojo - onChange
    Bonjour à tous,

    Je suis en train de développer un système de commentaire pour une appli web codée avec dojo.
    C'est grosso modo un formulaire de recherche dynamique, avec la possibilité en fonction des critères d'enregistrer un commentaire.
    En fonction des critères choisis, les autres se mettent à jour.
    Par exemple, je sélectionne une ville, et le store du champs agence se met à jour, afin de n'avoir dans la liste déroulante que les agences de la ville sélectionnée.
    Tous les champs, quand ils sont mis à jour (onChange), executent la même fonction, qui, en fonction du champs par lequel elle a été appelée, va mettre à jour les autres.

    J'espère que vous me suivez.

    Le truc, c'est que si j'en met un à jour, les autres vont se mettre à jour aussi, et je ne le veut pas.
    Donc, j'ai eu la bonne idée de retirer le onchange de mes input HTML, et de les mettre en javascript, afin de pouvoir les supprimer, et les re-créer quand j'en ai envie.
    Sauf que ça ne fonctionne pas.
    Je mets à jour un champs, il passe dans la fonction qui désactive tous les onchange. Je modifie la valeur des champs, je remets les onchange, et PAF ! Les onchange s'activent.
    Je pense qu'il doit y avoir une mémoire de la valeur des champs.

    Est-ce que quelqu'un (qui aurait compris mon problème, ce qui n'est pas facile vue comment je m'exprime j'en conviens) pourrait m'aider ?

    J'espère avoir été clair dans mes explications, n'hésitez pas à me poser des questions.

    En gros, pour faire simple, je souhaite désactiver l'événement onchange sur des input, puis le réactiver ensuite sans qu'il se déclenche (sans qu'il prenne en compte la valeur en cours en gros).

    Merci d'avance.
    Bonne journée à tous.

    PS : je ne pense pas m'être planté dans l'emplacement de la discussion, désolé si c'est le cas.

  2. #2
    Membre actif

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2005
    Messages : 135
    Points : 258
    Points
    258
    Par défaut
    Bonjour,

    Je ne comprends pas le problème
    Sur un événement onchange, lorsque l'on fait appel à une fonction pour traiter cet événement on peut faire ce que l'on veut ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Je ne comprends pas ta question.
    Logiquement oui on fait ce que l'on veut dans la fonction.

    Ce que je souhaite arriver à faire, c'est ça :
    1. Création du onchange sur des input en javascript
    2. déclenchement de l'événement onchange
    3. execution de la fonction qui est dans le onchange (créé en 1)
    4. suppression des onchange, puis modification de la valeurs des autre champs (qui on la même fonction dans leur onchange créé en 1)
    5. re-création des onchange

    Le but du jeu est que lorsque je mets les champs à jour, les onchange ne s'executent pas.

    En gros, il faut que les onchange ne fonctionne que si c'est l'utilisateur qui fait le changement de valeur, et non pas le traitement javascript.


    La ou est mon problème, c'est que quand je re-créé les onchange, ils s'executent. Et je n'arrive pas à comprendre pourquoi.
    J'ai déjà affecté la valeur au input, et je créé le onchange. Ca ne devrait pas s'executer.

    Voici un peu de code pour exemple :

    Deux input :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input dojoType="dijit.form.TextBox" id="inpFactureCom" name="inpFactureCom" />
    <input dojoType="dijit.form.TextBox" id="inpConfirmCom" name="inpConfirmCom" />
    Création des onchange :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    factureOnChange = dojo.connect(dijit.byId("inpFactureCom"), "onChange", function(){majChampsCommentaire(dijit.byId("inpFactureCom"));});
    confirmOnChange = dojo.connect(dijit.byId("inpConfirmCom"), "onChange", function(){majChampsCommentaire(dijit.byId("inpConfirmCom"));});
    Dans la fonction majChampsCommentaire(input), je désactive les onchange, mets à jour les champs autres que input passé en paramètre, puis réactive les onchange :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dojo.disconnect(factureOnChange);
    dijit.byId("inpFactureCom").set('displayedValue', '4561');
    factureOnChange = dojo.connect(dijit.byId("inpFactureCom"), "onChange", function(){majChampsCommentaire(dijit.byId("inpFactureCom"));});
    Le truc la, c'est que le onchange s’exécute sur facture avec la valeur 4561. Et je ne veux pas.

  4. #4
    Membre actif

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2005
    Messages : 135
    Points : 258
    Points
    258
    Par défaut
    Je comprends mieux le problème à l'aide d'un peu de code .

    Je pense qu'il faut chercher du côté de dojo/on au lieu de dojo/connect.

    Tout d'abord, il préconise depuis la version 1.7 d'utiliser dojo/on car il semble que dojo/connect va disparaitre en 2.x.

    De plus, d'après la doc, dojo/on est plus optimisé.

    Et enfin, je garde le meilleur pour la fin, il semble qu'il y a la solution à votre problème ...
    dojo/on a la même signature que dojo/connect
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    on( mynode, "change", myfunction);
    mais il y a une méthode que je n'avais pas remarqué jusqu'ici, on.pausable.
    Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    factureOnChange = on.pausable( mynode, "change", myfunction);
    et dans la fonction majChampsCommentaire ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function majChampsCommentaire() { 
    factureOnChange.pause(); 
    dijit.byId("inpFactureCom").set('displayedValue', '4561'); 
    factureOnChange.resume(); 
    }
    ainsi, on n'a plus le deuxième événement.

    j'espère que cela vous servira.

Discussions similaires

  1. [ZF 1.11] problème dojo.date sur onchange dans foreach
    Par yoann92 dans le forum Zend_Form
    Réponses: 2
    Dernier message: 27/09/2012, 11h14
  2. [Dojo] evenement onChange sur dijit.form.ComboBox et dijit.form.DateTextBox en JS
    Par moukit233 dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 30/11/2010, 12h59
  3. [Dojo] event onchange sur les cellule dojox.grid.datagrid
    Par moukit233 dans le forum Bibliothèques & Frameworks
    Réponses: 8
    Dernier message: 14/09/2010, 11h52
  4. [Dojo] onChange ou onChangera pas ?
    Par vermine dans le forum Bibliothèques & Frameworks
    Réponses: 24
    Dernier message: 29/06/2009, 23h07
  5. [struts] onchange et mapping
    Par k4eve dans le forum Struts 1
    Réponses: 7
    Dernier message: 26/04/2004, 16h21

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