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

Symfony PHP Discussion :

Annulation d'un submit pour les champs non valides


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2015
    Messages : 68
    Points : 40
    Points
    40
    Par défaut Annulation d'un submit pour les champs non valides
    Bonjour,

    J'ai un formulaire avec des contraintes sur les champs et j'aimerais que cela bloque la requête d'insertion si les champs ne sont pas valide.

    J'ai utilisé des fonctions js tiré d'un exemple, donc je pense qu'elle fonctionne, le problème doit venir de la form de Symfony.

    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
     
    {{ form_start(form, {'attr': {'class': 'formoid-solid-green formbootstrapcustom', 'onSubmit':'return verifForm()'}}) }}
            <div class="row">
                <div class="col-md-5 col-md-offset-1">
                    <div class="element-input">
                        <label class="title">
                            {#<span class="required">*</span>#}
                        </label>
                        <div class="item-cont">
                            {{ form_errors(form.name) }}
                            {{ form_widget(form.name, {'attr': {'onblur':'return verifPseudo(this)'}}) }}
                            <span class="icon-place"></span>
                        </div>
                    </div>
                </div>
     
    ...
     
     
     <div class="submit"><input type="submit" value="Envoyer"/></div>
            {{ form_rest(form) }}
            {{ form_end(form) }}
     
     
    <script>
     
                function surligne(champ, erreur)
                {
                    if(erreur)
                        champ.style.backgroundColor = "#fba";
                    else
                        champ.style.backgroundColor = "";
                }
     
                function verifPseudo(champ)
                {
                    if(champ.value.length < 2 || champ.value.length > 25)
                    {
                        surligne(champ, true);
                        return false;
                    }
                    else
                    {
                        surligne(champ, false);
                        return true;
                    }
                }
     
                function verifMail(champ)
                {
                    var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
                    if(!regex.test(champ.value))
                    {
                        surligne(champ, true);
                        return false;
                    }
                    else
                    {
                        surligne(champ, false);
                        return true;
                    }
                }
     
                function verifForm(f)
                {
                    var pseudoOk = verifPseudo(f.pseudo);
                    var mailOk = verifMail(f.email);
     
                    if(pseudoOk && mailOk)
                        return true;
                    else
                    {
                        alert("Veuillez remplir correctement tous les champs");
                        return false;
                    }
                }
     
     
            </script>

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    tu veux dire que lors de l'appuis sur ENVOYER le formulaire est validé et n’exécute pas la fonction javascript verifSubmit ?

    si c'est le cas, tu mets ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $(".......").submit(function(e){
         e.preventDefault();
     
        ...
    });
    et cela va bloquer l'envois du formulaire.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2015
    Messages : 68
    Points : 40
    Points
    40
    Par défaut
    Merci pour ta réponse 😊, Mais cela ne marche pas 😞

    J'ai inclut ta méthode dans ma fonction verifForm(), aucun changement, il n'arrive pas à passer dans le else. Enfaite je me demande si il execute la fonction verifForm() ?

    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
     
    function verifForm(f)
                {
                    var pseudoOk = verifPseudo(f.pseudo);
                    var mailOk = verifMail(f.email);
     
                    if(pseudoOk && mailOk)
                        return true;
                    else
                    {
                        $("form").submit(function(e){
                            e.preventDefault();
     
                        });
                    }
                }

  4. #4
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    met des alert un peu partout et tu verras bien :
    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
     
    function verifForm(f)
                {
     
    alert("in");
                    var pseudoOk = verifPseudo(f.pseudo);
                    var mailOk = verifMail(f.email);
     
                    if(pseudoOk && mailOk) {
    alert(true);
                        return true;
                    } else
                    {
    alert(false);
                        $("form").submit(function(e){
                            e.preventDefault();

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2015
    Messages : 68
    Points : 40
    Points
    40
    Par défaut
    Bon, j'ai changé totalement de méthode et cela fonctionne, je sais pas si c'est très optimisé mais pour le moment ca ira, si toute fois quelqu'un à une alternatif, n'hésitez pas. Je poste le code pour ceux qui sont dans la même situation 😉

    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
    function validForm(){
                    form_name=document.forms['recruting'].elements['recruting[name]'];
                    form_lastName=document.forms['recruting'].elements['recruting[lastName]'];
                    form_mail=document.forms['recruting'].elements['recruting[mail]'];
                    form_birthDate=document.forms['recruting'].elements['recruting[birthDate]'];
                    form_mobile=document.forms['recruting'].elements['recruting[mobile]'];
                    form_city=document.forms['recruting'].elements['recruting[city]'];
                    form_cp=document.forms['recruting'].elements['recruting[cp]'];
                    form_comment=document.forms['recruting'].elements['recruting[comment]'];
     
     
                    if(form_name.value == "") {
                        alert("Saisissez le nom");
                        return false;
                    } else if(form_lastName.value == "") {
                        alert("Saisissez le prénom");
                        return false;
                    }else if(form_mail.value == "") {
                        alert("Saisissez le mail");
                        return false;
                    }else if(form_birthDate.value == "") {
                        alert("Saisissez la date de naissance");
                        return false;
                    }else if(form_mobile.value == "") {
                        alert("Saisissez le  numéro de téléphone");
                        return false;
                    }else if(form_city.value == "") {
                        alert("Saisissez la ville");
                        return false;
                    }else if(form_cp.value == "") {
                        alert("Saisissez le code postal");
                        return false;
                    }else if(form_comment.value == "") {
                        alert("Saisissez votre motivation");
                        return false;
                    }else{
                        return true;
                    }
                }

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Points : 1 022
    Points
    1 022
    Par défaut
    tu pouvais le faire beaucoup mieux a mon avis.
    la première des choses , tu as écris par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      if(form_name.value == "")
    alors que le caractère espace peux échapper
    encore plus , si tu va alerter l'utilisateur 3 fois parce qu'il a 3 champs vide ca sera pas pratique.
    Je redis encore , a mon avis.
    Par contre , d'habitude je fais comme dessous:
    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
     
        <script type="text/javascript">
    ///
       var arrayOfErrors = [];// array d erreur
       if(form_name.value.trim.length <1) {   arrayOfErrors.push("Saisissez le nom");}
       if(form_lastName.value.trim.length <1) {   arrayOfErrors.push("Saisissez le prénom");}             
        //
      if ((arrayOfErrors.length == 0) {
            return true;
    }        else{
    var msg="";
    for(var i= 0; i < x.arrayOfErrors; i++)
    {
         msg = msg+(arrayOfErrors[i]);
    }
    alert(msg);
    return false;
     
    }     
     </script>

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2015
    Messages : 68
    Points : 40
    Points
    40
    Par défaut
    Effectivement c'est plus optimisé 😉

    merci 😊

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

Discussions similaires

  1. comment gérer Slowly Changing Dimension pour les champs non traqués?
    Par Louisa2005 dans le forum Conception/Modélisation
    Réponses: 11
    Dernier message: 29/09/2010, 22h00
  2. [WD-2003] Affichage de crochets pour les champs non rempli lors de l'impression
    Par formabox dans le forum VBA Word
    Réponses: 1
    Dernier message: 24/04/2009, 09h57
  3. Mysql : choix des types pour les champs entre :
    Par Thierry8 dans le forum Administration
    Réponses: 3
    Dernier message: 14/06/2006, 08h22
  4. [MySQL] Associer lien pour les champs de ma liste
    Par nouna dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/10/2005, 18h59

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