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 :

Simplifier une fonction


Sujet :

jQuery

  1. #1
    Modérateur

    Avatar de kOrt3x
    Homme Profil pro
    Technicien Informatique/Webmaster
    Inscrit en
    Septembre 2006
    Messages
    3 650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Informatique/Webmaster
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 650
    Points : 15 771
    Points
    15 771
    Par défaut Simplifier une fonction
    Bonjour,

    J'aimerai savoir s'il n'est pas possible de simplifier ces deux "fonctions" :

    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
                        $("#boutonOk").click(function() { 
                            if ( !$("#Q5R3").val() && $("#Q5R2").attr("checked") ) {
                                window.alert("Merci de remplir le champ");
                                $("#Q5R3").focus();
                                return false;
                            }
                        });
     
                        $("#boutonOk").click(function() { 
                            if ( !$("#Q5R5").val() && $("#Q5R4").attr("checked") ) {
                                window.alert("Merci de remplir le champ");
                                $("#Q5R5").focus();
                                return false;
                            }
                        });
    N'est-il pas possible de faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
                        $("#boutonOk").click(function() { 
                            if ( !$("#Q5R3").val() && $("#Q5R2").attr("checked") ) {
                                window.alert("Merci de remplir le champ");
                                $("#Q5R3").focus();
                                return false;
                            }
                            if ( !$("#Q5R5").val() && $("#Q5R4").attr("checked") ) {
                                window.alert("Merci de remplir le champ");
                                $("#Q5R5").focus();
                                return false;
                            }
                        });
    La rubrique Mac
    Les cours & tutoriels Mac
    Critiques de Livres Mac & iOS
    FAQ Mac & iOS

    ________________________________________________________________________
    QuickEvent : Prise de rendez-vous rapide pour iPhone/iPad et iPod Touch (AppStore)
    Mon Livre sur AppleScript : AppleScript: L'essentiel du langage et de ses applications

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 25
    Points : 34
    Points
    34
    Par défaut
    Tu as tester ton 2eme morceau de code?
    je pense que sa devrai marcher.

    Car j'aurais la même logique que toi. 2 $(#...).click(...); autant mettre les bout de code que d'en un. mais je peut pas t’affirmai que sa marchera.

    Cependant dissocié en 2 fonction peut répondre a une 2eme logique: si tu doit retiré un champs et un check box correspondant, tu met en commentaire ou supprime la fonction qui fait référence a ces éléments de ta page.

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 28
    Points : 300
    Points
    300
    Par défaut
    Le simplifier oui, suffirait pourquoi pas d'avoir une fonction avec les 2 champs en question

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function verifForm( pField1, pField2 ) {
     if ( !$(pField1).val() && $(pField2 ).attr("checked") ) {
           window.alert("Merci de remplir le champ");
           ( $pField1).focus();
           return false;
     }
     return true;
    }
     
     $("#boutonOk").click(function() { 
        return verifForm( "#Q5R3", "#Q5R2" ) || verifForm( "#Q5R5", "#Q5R4" )
     }
    Après c'est, est - ce que cela vaut le coup ? ?

  4. #4
    Modérateur

    Avatar de kOrt3x
    Homme Profil pro
    Technicien Informatique/Webmaster
    Inscrit en
    Septembre 2006
    Messages
    3 650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Informatique/Webmaster
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 650
    Points : 15 771
    Points
    15 771
    Par défaut
    Comme je débute en jQuery, je trouvé très bizarre de ne pas pouvoir mettre plusieurs IF dans à la suite, alors qu'en PHP ça fonctionne.
    Mais bon, après il y a peut être une explication, mais je ferai avec.
    La rubrique Mac
    Les cours & tutoriels Mac
    Critiques de Livres Mac & iOS
    FAQ Mac & iOS

    ________________________________________________________________________
    QuickEvent : Prise de rendez-vous rapide pour iPhone/iPad et iPod Touch (AppStore)
    Mon Livre sur AppleScript : AppleScript: L'essentiel du langage et de ses applications

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 25
    Points : 34
    Points
    34
    Par défaut
    Ce qui cloche peut être dans ta factorisation est que si le 1er test est concluant, avec le return false; le 2eme if n'est pas traiter.

  6. #6
    Modérateur

    Avatar de kOrt3x
    Homme Profil pro
    Technicien Informatique/Webmaster
    Inscrit en
    Septembre 2006
    Messages
    3 650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Informatique/Webmaster
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 650
    Points : 15 771
    Points
    15 771
    Par défaut
    Citation Envoyé par Piflo Voir le message
    Ce qui cloche peut être dans ta factorisation est que si le 1er test est concluant, avec le return false; le 2eme if n'est pas traiter.
    Effectivement, je viens de comprendre et de faire le test, mais comment on empêche de valider le formulaire dans ce cas là ?

    Parce ce que là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $("#boutonOk").click(function() { 
                            if ( !$("#Q1R1").attr('checked') && !$("#Q1R2").attr('checked') && !$("#Q1R3").attr('checked') ) { 
                                window.alert("Merci de répondre à la question 1");
                            }
     
                            if ( !$("#Q1R4").val() && $("#Q1R3").attr("checked") ) {
                                window.alert("Merci de remplir le champ");
                                $("#Q1R4").focus();
                            }
     
                            if ( !$("#Q4R1").attr('checked') && !$("#Q4R2").attr('checked') && !$("#Q4R3").attr('checked') && !$("#Q4R4").attr('checked') ) {
                                window.alert("Merci de répondre à la question 4");
                            }
                        });
    La rubrique Mac
    Les cours & tutoriels Mac
    Critiques de Livres Mac & iOS
    FAQ Mac & iOS

    ________________________________________________________________________
    QuickEvent : Prise de rendez-vous rapide pour iPhone/iPad et iPod Touch (AppStore)
    Mon Livre sur AppleScript : AppleScript: L'essentiel du langage et de ses applications

  7. #7
    Modérateur

    Avatar de kOrt3x
    Homme Profil pro
    Technicien Informatique/Webmaster
    Inscrit en
    Septembre 2006
    Messages
    3 650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Informatique/Webmaster
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 650
    Points : 15 771
    Points
    15 771
    Par défaut
    Bon, j'ai trouvé une solution qui me semble correcte :

    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
    $("#boutonOk").click(function() { 
     
                            var valid = false;
     
                            if ( !$("#Q1R1").attr('checked') && !$("#Q1R2").attr('checked') && !$("#Q1R3").attr('checked') ) { 
                                window.alert("Merci de répondre à la question 1");
                            } 
                            else if ( !$("#Q1R4").val() && $("#Q1R3").attr("checked") ) {
                                window.alert("Merci de remplir le champ de la question 1");
                                $("#Q1R4").focus();
                            } 
                            else if ( !$("#Q4R1").attr('checked') && !$("#Q4R2").attr('checked') && !$("#Q4R3").attr('checked') && !$("#Q4R4").attr('checked') ) {
                                window.alert("Merci de répondre à la question 4");
                            } 
     
                            else if ( !$("#Q5R3").val() && $("#Q5R2").attr("checked") ) {
                                window.alert("Merci de remplir le champ de la question 5");
                                $("#Q5R3").focus();
                            } 
                            else if ( !$("#Q5R5").val() && $("#Q5R4").attr("checked") ) {
                                window.alert("Merci de remplir le champ de la question 5");
                                $("#Q5R5").focus();
                            } 
                            else if ( !$("#Q7R1").attr('checked') && !$("#Q7R2").attr('checked') && !$("#Q7R3").attr('checked') && !$("#Q7R4").attr('checked') && !$("#Q7R5").attr('checked') ) { 
                                window.alert("Merci de répondre à la question 7");
                            } 
                            else if ( !$("#Q7R6").val() && $("#Q7R5").attr("checked") ) {
                                window.alert("Merci de remplir le champ de la question 7");
                                $("#Q7R6").focus();
                            } 
                            else if ( !$("#Q8R1").attr('checked') && !$("#Q8R2").attr('checked') && !$("#Q8R3").attr('checked') && !$("#Q8R4").attr('checked') && !$("#Q8R5").attr('checked') && !$("#Q8R6").attr('checked') && !$("#Q8R7").attr('checked') && !$("#Q8R8").attr('checked')  && !$("#Q8R9").attr('checked')) { 
                                window.alert("Merci de répondre à la question 8");
                            } 
                            else if ( !$("#Q8R10").val() && $("#Q8R9").attr("checked") ) {
                                window.alert("Merci de remplir le champ de la question 8");
                                $("#Q8R10").focus();
                            }
                            else if ( !$("#Q9R1").attr('checked') && !$("#Q9R2").attr('checked') && !$("#Q9R3").attr('checked') && !$("#Q9R4").attr('checked') ) { 
                                window.alert("Merci de répondre à la question 9");
                            } 
                            else if ( !$("#Q9R5").val() && $("#Q9R4").attr("checked") ) {
                                window.alert("Merci de remplir le champ de la question 9");
                                $("#Q9R5").focus();
                            } 
                            else {
                                valid = true;
                            }
     
                            return valid;
                        });
    La rubrique Mac
    Les cours & tutoriels Mac
    Critiques de Livres Mac & iOS
    FAQ Mac & iOS

    ________________________________________________________________________
    QuickEvent : Prise de rendez-vous rapide pour iPhone/iPad et iPod Touch (AppStore)
    Mon Livre sur AppleScript : AppleScript: L'essentiel du langage et de ses applications

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

Discussions similaires

  1. Comment simplifier ce code en une fonction simple ?
    Par roleca dans le forum Langage
    Réponses: 10
    Dernier message: 05/09/2014, 17h31
  2. Comment simplifier l'appel répétitif d'une fonction paramétrée ?
    Par Tendhor57 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/03/2013, 08h02
  3. Simplifier une fonction
    Par Abdellah.alaoui2006 dans le forum Débuter
    Réponses: 3
    Dernier message: 06/03/2010, 12h31
  4. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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