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

JavaScript Discussion :

Encapsuler des fonctions


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    BTS SIO
    Inscrit en
    F�vrier 2014
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 30
    Localisation : France

    Informations professionnelles :
    Activit� : BTS SIO

    Informations forums :
    Inscription : F�vrier 2014
    Messages : 4
    Par d�faut Encapsuler des fonctions
    Bonjour,

    Je d�bute plus au moins dans le dev WEB et c'est pour cela que j'aurai besoin de vous pour me r�soudre un probl�me.

    Je souhaite faire une grosse fonction qui permet de v�rifier un formulaire. Pour cela, je souhaite encapsuler plusieurs fonctions dans une grosse, mais en vain ..
    Pourtant quand j'appelle mes fonctions une � une, cela fonctionne..

    Code JS :
    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
    function checkCategories(){
      function checkSlug(slug){
        var patt=new RegExpSlug(/^[a-z\-0-9]+$/);
     
        if (document.formAjouter_Categorie.slug.value.length == 0){
          alertify.alert("Le champ nom doit être renseigné");
          return false;
        }
        if(document.formAjouter_Categorie.slug.value == (/^[a-z\-0-9]+$/)){
          alertify.alert("Le slug est incorrect");
          return false;
        }
      }
     
      function checkName(name){
        var mini = 2
        var maxi = 25
     
        if (document.formAjouter_Categorie.name.value.length == 0){
          alertify.alert("Le champ nom doit être renseigné");
          return false;
        }
        if (mini != 0) {
          if (document.formAjouter_Categorie.name.value.length < mini ) {
            alertify.alert("Le nom de la catégorie doit comporter au moins " + mini + " caractères.");
            return false;
          }
        }
        if (maxi != 0) {
          if (document.formAjouter_Categorie.name.value.length > maxi ) {
            alertify.alert("Le nom de la catégorie ne doit pas comporter plus de " + maxi + " caractères.");
            return false;
          }
        }
      }
    }
    Code HTML :
    Code html : S�lectionner tout - Visualiser dans une fen�tre � part
    <form name="formAjouter_Categorie" action="#" method="post"  onsubmit="return checkCategories()">

    Pourriez vous m��claircir ? Je vous en remercie d'avance.

  2. #2
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    des fonctions DANS des fonctions ...

    assez effrayant je dois le dire ...

    a la limite un objet ???
    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
     
    var checkCategories = {
        checkSlug: function (slug) {
            var patt = new RegExpSlug(/^[a-z\-0-9]+$/);
     
            if (document.formAjouter_Categorie.slug.value.length == 0) {
                alertify.alert("Le champ nom doit être renseigné");
                return false;
            }
        },
        checkName: function (name) {
            var mini = 2
            var maxi = 25
     
            if (document.formAjouter_Categorie.name.value.length == 0) {
                alertify.alert("Le champ nom doit être ...");
            }
        }
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    BTS SIO
    Inscrit en
    F�vrier 2014
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 30
    Localisation : France

    Informations professionnelles :
    Activit� : BTS SIO

    Informations forums :
    Inscription : F�vrier 2014
    Messages : 4
    Par d�faut
    D�sole de t'avoir effray�

    Donc j'ai prit en compte ta correction, j'obtiens donc ce code :

    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
     
    var checkCategories = {
      checkSlug : function (slug){
     
        if (document.formAjouter_Categorie.slug.value.length == 0){
          alertify.alert("Le champ nom doit être renseigné");
          return false;
        }
        if(document.formAjouter_Categorie.slug.value == (/^[a-z\-0-9]+$/)){
          alertify.alert("Le slug est incorrect");
          return false;
        }
      },
     
      checkName : function (name){
        var mini = 2
        var maxi = 25
     
        if (document.formAjouter_Categorie.name.value.length == 0){
          alertify.alert("Le champ nom doit être renseigné");
          return false;
        }
        if (mini != 0) {
          if (document.formAjouter_Categorie.name.value.length < mini ) {
            alertify.alert("Le nom de la catégorie doit comporter au moins " + mini + " caractères.");
            return false;
          }
        }
        if (maxi != 0) {
          if (document.formAjouter_Categorie.name.value.length > maxi ) {
            alertify.alert("Le nom de la catégorie ne doit pas comporter plus de " + maxi + " caractères.");
            return false;
          }
        }
      }
    }
    Il me semble qu'il est juste, ou alors arr�te moi si je me trompe.
    Cependant que dois-je mettre dans mon onsubmit de mon formulaire �tant donn� que c'est un objet ?

  4. #4
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    Pourquoi effrayant SpaceFrog ? Une fonction est une variable locale tout � fait valable. On trouve ce pattern dans plein de biblioth�ques. C'est m�me un pattern courant pour la d�claration de m�thodes d'instance en POO JavaScript.

    Strycek, dans ton premier code tu d�clares deux fonctions au moment de l'appel de la fonction checkCategories. Mais ces fonctions, tu n'en fais rien avec. Peut-�tre que sous cette forme, le probl�me t'appara�tra plus clair :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    function checkCategories(){ 
       var checkSlug = function(slug){ ... };
       var checkName = function(name){ ... };
      //ici, il manque concr�tement ce que doit faire la fonction checkCategories
    }

  5. #5
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Je crois que StryceK s'attendait � ce que les fonctions � internes � soient ex�cut�es dans la foul�e. Du coup je pense que le post de Sylvain est tr�s clair l�-dessus.

    Allez, j'en rajoute une couche quand m�me : les fonctions locales ne sont rien de plus que des variables locales. Il faut les appeler � la main sinon �a ne se fera pas tout seul
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  6. #6
    Futur Membre du Club
    Homme Profil pro
    BTS SIO
    Inscrit en
    F�vrier 2014
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 30
    Localisation : France

    Informations professionnelles :
    Activit� : BTS SIO

    Informations forums :
    Inscription : F�vrier 2014
    Messages : 4
    Par d�faut
    Etrange, j'ai pourtant recopi� exactement ta syntaxe Sylvain.
    J'obtiens donc ceci :
    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
    function checkCategories(){
      var checkSlug = function(slug){
        if (document.formAjouter_Categorie.slug.value.length == 0){
          alertify.alert("Le champ nom doit être renseigné");
          return false;
        }
        if(document.formAjouter_Categorie.slug.value == (/^[a-z\-0-9]+$/)){
          alertify.alert("Le slug est incorrect");
          return false;
        }
      };
     
      var checkName = function (name){
        var mini = 2
        var maxi = 25
     
        if (document.formAjouter_Categorie.name.value.length == 0){
          alertify.alert("Le champ nom doit être renseigné");
          return false;
        }
        if (mini != 0) {
        if (document.formAjouter_Categorie.name.value.length < mini ) {
          alertify.alert("Le nom de la catégorie doit comporter au moins " + mini + " caractères.");
          return false;
          }
        }
        if (maxi != 0) {
          if (document.formAjouter_Categorie.name.value.length > maxi ) {
            alertify.alert("Le nom de la catégorie ne doit pas comporter plus de " + maxi + " caractères.");
            return false;
          }
        }
      }; 
    }
    Ainsi que mon bout de HTML :
    Code html : S�lectionner tout - Visualiser dans une fen�tre � part
    <form name="formAjouter_Categorie" action="#" method="post"  onsubmit="return checkCategories()">

  7. #7
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    Vraisemblablement tu ne comprends pas le probl�me

    Ma syntaxe et la tienne sont �quivalentes, c'�tait pour mettre en �vidence qu'il manque quelque-chose dans ton code ! Relis mon commentaire et celui de Watilin plus attentivement

  8. #8
    Futur Membre du Club
    Homme Profil pro
    BTS SIO
    Inscrit en
    F�vrier 2014
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 30
    Localisation : France

    Informations professionnelles :
    Activit� : BTS SIO

    Informations forums :
    Inscription : F�vrier 2014
    Messages : 4
    Par d�faut
    Dans ce cas l� qu'elle est l'instruction qui permet d�ex�cuter les fonctions ?

  9. #9
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    Un petit retour aux bases s'impose on dirait.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    checkSlug();
    checkName();
    Tu remarqueras aussi que tu d�clares des arguments slug et name � ces fonctions, alors qu'ils ne sont pas utilis�s dans le code des fonctions.

  10. #10
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    j'ai d�j� fais cela tu peux t'inspirer de http://www.developpez.net/forums/d85...s-autoverifes/
    A+JYT

Discussions similaires

  1. Encapsulation des fonctions en javascript
    Par nicko_73 dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 28/10/2009, 09h29
  2. Liste des fonctions
    Par Mookie dans le forum C
    R�ponses: 2
    Dernier message: 22/09/2003, 16h42
  3. Des fonctions OGL pour les images de format usuel ?
    Par jamal24 dans le forum OpenGL
    R�ponses: 3
    Dernier message: 31/05/2003, 21h59
  4. Appel � des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    R�ponses: 3
    Dernier message: 26/05/2003, 13h33
  5. Impl�mentation des fonctions math�matiques
    Par mat.M dans le forum Math�matiques
    R�ponses: 9
    Dernier message: 17/06/2002, 16h19

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