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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 : 42
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 650
    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
    Membre confirmé
    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
    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 éprouvé

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 28
    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 : 42
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 650
    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
    Membre confirmé
    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
    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 : 42
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 650
    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 : 42
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 650
    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