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 :

Comment faire pour ne pas déclencher change au lancement de la page ?


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2013
    Messages : 25
    Par défaut Comment faire pour ne pas déclencher change au lancement de la page ?
    Bonjour,

    J'ai dans mon code JQuery :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
     
    $(function(){
            $(".types").live('change', function(event) {
                event.preventDefault();
                var types = $(this);
                var name = types.prop('name');
     
                var toRemove1 = 'components[';
                var toRemove2 = '][type]';
     
                name = name.replace(toRemove1,'');
                name = name.replace(toRemove2,'');
                var key = name;
     
                var parent = types.parent().parent();
                var t = types.val();
                var i = parent.find('.component-id').val();
     
                parent.find('.components').html('');
                $.post("{{ path('flux_components') }}", {type: t, id: i }, function(data) {
                    var components = parent.find('.components');
                    components.html(data);
                    components.change();
                });
     
                var param1Unit = parent.find('.param1Unit');
                var param2Unit = parent.find('.param2Unit');
                var param1Value = parent.find('.param1Value'+key);
                var param2Value = parent.find('.param2Value'+key);
                var unitMass = parent.find('.unitMass');
     
                param1Unit.html('');
                param2Unit.html('');
                //param1Value.prop('value','');
                //param2Value.prop('value','');
                unitMass.html('');
     
                param1Unit.show();
                param2Unit.show();
                param1Value.show();
                param2Value.show();
                unitMass.show();
     
            }).change();
     
            $(".components").live('change', function(event) {
                event.preventDefault();
                var component = $(this);
     
                var name = component.prop('name');
                var toRemove1 = 'components[';
                var toRemove2 = '][component]';
     
                name = name.replace(toRemove1,'');
                name = name.replace(toRemove2,'');
                var key = name;
     
                var parent = component.parent().parent();
                var componentId = parent.find('.components option:selected').val();
                var val = componentId;
     
                $.post("{{ path('flux_component') }}", { id: val }, function(data) {
                    var param1Unit = parent.find('.param1Unit');
                    var param2Unit = parent.find('.param2Unit');
                    var param1Value = parent.find('.param1Value'+key);
                    var param2Value = parent.find('.param2Value'+key);
                    var unitMass = parent.find('.unitMass');
     
                    if(data.param1 != "UN") {
                        //Si l'utilisateur n'a rien entré
                        if(param1Value.val() == 0.0000){
                            if(data.val != 0.0000){
                                param1Value.prop('value',data.val);
                            }else{
                                param1Value.prop('value','');
                            }
                        }
     
                        param1Unit.html(data.param1);
     
                        if(data.param2 != ""){
                            if(data.param2 == "mm2"){
                                param2Unit.html("mm<sup>2</sup>");
                                param2Value.prop('disabled',false);
                            }else if(data.param2 == "cm3"){
                                param2Unit.html("cm<sup>3</sup>");
                                param2Value.prop('disabled',false);
                            }else{
                                param2Unit.html(data.param2);
                                param2Value.prop('disabled',false);
                            }
                        }else{
                            param2Unit.html("");
                            param2Value.prop('value','');
                            param2Value.prop('disabled',true);
                        }
                    }else{
                        param1Unit.html(data.param1);
     
                        if(data.param2 != ""){
                            if(data.param2 == "mm2"){
                                param2Unit.html("mm<sup>2</sup>");
                                //Si l'utilisateur n'a rien rentré
                                if(param2Value.val() == 0.0000){
                                    if(data.val != 0.0000){
                                        param2Value.prop('value',data.val);
                                    }else{
                                        param2Value.prop('value','');
                                    }
                                }
                                param2Value.prop('disabled',false);
                            }else if(data.param2 == "cm3"){
                                param2Unit.html("cm<sup>3</sup>");
                                //Si l'utilisateur n'a rien rentré
                                if(param2Value.val() == 0.0000){
                                    if(data.val != 0.0000){
                                        param2Value.prop('value',data.val);
                                    }else{
                                        param2Value.prop('value','');
                                    }
                                }
                                param2Value.prop('disabled',false);
                            }else{
                                param2Unit.html(data.param2);
                                //Si l'utilisateur n'a rien rentré
                                if(param2Value.val() == 0.0000){
                                    if(data.val != 0.0000){
                                        param2Value.prop('value',data.val);
                                    }else{
                                        param2Value.prop('value','');
                                    }
                                }
                                param2Value.prop('disabled',false);
                            }
                        }else{
                            param2Unit.html("");
                            param2Value.prop('value','');
                            param2Value.prop('disabled',true);
                        }
                    }
     
                    unitMass.html(data.unitMass)
                    param1Value.show();
                    param2Value.show();
                    param1Unit.show();
                    param2Unit.show();
                    unitMass.show();
     
                }, 'json');
            });
    });
    Les classes types et components sont des select, quand on sélectionne un type, ça nous donne le choix pour un component sur un 2ème select par rapport au type sélectionné.

    J'ai mis un event change sur type pour pouvoir réinitialiser tous les champs quand on change de type.

    Seulement, ça se déclenche dès le chargement de la page donc ça réinitialise tout le temps tout !

    Comment puis-je faire en sorte que ça ne se déclenche pas au chargement de la page svp ?

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2013
    Messages : 25
    Par défaut
    Pour le moment j'ai juste commenté les lignes qui font que param1Value et param2Value se retrouvent systématiquement vides mais ça ne fait que contourner le problème.

  3. #3
    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
    Tout d'abord, .live() est déprécié depuis un moment, tu devrais mettre ton code à jour (ainsi que la version de jQuery à priori) et utiliser .on().

    Sinon, pour éviter de déclencher l'événement change au chargement, il suffit de ne pas demander de le faire !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(".types").live('change', function(event) {
        // ...
    }).change();
    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

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2013
    Messages : 25
    Par défaut
    Euh, j'ai pas tout compris là, ça fait quoi exactement le .change() à la fin de la fonction ?

  5. #5
    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
    J'ai dans mon code JQuery
    Euh... c'est ton code mais tu ne sais pas ce que tu as fait ?

    ça fait quoi exactement le .change() à la fin de la fonction ?
    J'ai du mal à croire qu'une simple recherche (par exemple dans la doc de jQuery) ne t'ai pas permis de répondre à cette question...
    D'autant qu'en extrapolant un minimum mon précédent message, on peut arriver facilement à la conclusion...
    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

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2013
    Messages : 25
    Par défaut
    OK merci.

    Nouveau souci maintenant :

    Quand j'enlève le .change() à la fin, en effet ça ne se lance plus au chargement.

    Cependant, comme ça ne se lance plus au chargement, au chargement mon select components est vide :

    Est ce qu'il est possible de faire 2 $(".types").live('change', function(event) {}); ?

    Un qui se lance au chargement pour complèter le select components et un qui ne se lance pas au chargement pour remettre à zéro ?

  7. #7
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Exemple, déclencher un événement "change" sur un élément "select" : $( "#monSelectID" ).trigger( "change" );.
    Voir : http://api.jquery.com/trigger/

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. (background-image) comment faire pour ne pas répéter l'image
    Par chakan dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 10/04/2008, 11h33
  2. Réponses: 3
    Dernier message: 29/01/2008, 11h32
  3. Réponses: 2
    Dernier message: 12/09/2007, 22h42
  4. comment faire pour ne pas referencer dynamiquement
    Par tarekphp dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 15/05/2007, 12h11
  5. Réponses: 4
    Dernier message: 09/05/2007, 14h41

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