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 :

Règle de vérification d'un e-mail


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
    Avril 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Par défaut Règle de vérification d'un e-mail
    Bonjour,

    Je dois contrôler un email dans un formulaire par le biais du js.
    Voici les contrôles que je dois effectuer :
    1. champ vide
    2. structure correcte
    3. DNS correct



    Pour cela, j'utilise les "rules".

    Voici mon 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
    $("#f_profil").validate({
        rules: {
            email: {                        
                required: true,  // premier contrôle : champ vide
                email: true, // deuxième contrôle : structure correcte
                remote: {  // troisième contrôle : DNS correct
                    url: SERV+"/profile/ajax/validate/",
                    type: "POST",
                    data: {
                        email: function()  {
                            return $("#email").val();
                        }
                    }
                }
            },
        },
        messages: {
            email: {
                required: REQUIRED,
                email: "email invalide",
                remote: $.validator.format("{0}")
            }
        }
    });
    Voici mon code php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function ajaxAction () {
        $return = null;
     
        if($this->getRequest()->getParams('validate', null)) {
            if($this->getRequest()->getPost('email', null)) :
                $return = $this->validator('email', null, 'email');
            endif;
            $this->view->return = ($return) ? '"email invalide"' : '"true"';
        }
    }

    Le script fonctionne correctement partout sauf pour safari sur mac. (safari pc et iphone, pas de problème).

    Sur safari version mac, le premier et le deuxième contrôle fonctionnent. Par contre le troisième ne fonctionne pas.

    J'ai lu que les requêtes ajax étaient par défaut asynchrone et que des problèmes pouvaient en découler.
    src : http://www.eric-pidoux.com/actu/safa...avascript-ajax

    J'ai rajouté dans le "remote" la ligne juste après la ligne mais il n'y a pas de changement.

    Peut-être elle est mal placée ?
    J'ai essayé aussi d'utiliser addMethod mais comme je ne suis pas très calé en ajax, cela ne fonctionne pas.

    Si vous voyez mon erreur ou si vous avez une alternative, je suis preneur.

    Merci

  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
    Quel interet de la faire en ajax ???
    ça fait de l'utilisation de bande passante pour rien

    Il serait plus économique de faire juste une vérification de format avec une regExp coté client, puis une contre-vérification lors de la soumission du formulaire?
    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
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Par défaut
    Le contrôle est fait également lors de la soumission du formulaire (dans le cas où le js serait bloqué par le navigateur).

    Malheureusement, je ne suis pas décisionnaire sur le projet.
    Le but est de réduire les manipulations ou les étapes pour le client. C'est aussi pour que l'information soit indiquée au client de suite.

  4. #4
    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
    Pas besoin d'aller faire la vérification sur le serveur pour ça, javascript est tout a fait capable de vérifier une adresse mail au niveau syntaxique.
    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 !

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Par défaut
    Salut,

    Citation Envoyé par SpaceFrog Voir le message
    Pas besoin d'aller faire la vérification sur le serveur pour ça, javascript est tout a fait capable de vérifier une adresse mail au niveau syntaxique.
    Pas de soucis pour cela, je sais que javascript est capable de vérifier un email au niveau syntaxique.
    Un outil de zend framework permet de vérifier également la validité du nom de domaine.
    ex : une adresse email comme celle-ci (tartampion@blablabla.com) est correcte de manière syntaxique mais je doute que le nom de domaine existe. Un outil de zend me permet de le vérifier.

    A la demande de mon client, le contrôle devait être immédiat, d'où l'utilisation de l'ajax.

    Bref, le problème est résolu

    Comme je dis plus haut, l'ajout de "async: false," dans le "remote" n'a pas résolu le problème. J'ai également ajouté "cache: false," pour tester. Cela fonctionne toujours sur les navigateurs que j'avais testés mais aussi sur safari version mac (celui qui déconnait).

    Voici le code en place
    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
    $("#f_profil").validate({
        rules: {
            email: {                        
                required: true,  // premier contrôle : champ vide
                email: true, // deuxième contrôle : structure correcte
                remote: {  // troisième contrôle : DNS correct
                    url: SERV+"/profile/ajax/validate/",
                    type: "POST",
                    async: false,
                    cache: false,
                    data: {
                        email: function()  {
                            return $("#email").val();
                        }
                    }
                }
            },
        },
        messages: {
            email: {
                required: REQUIRED,
                email: "email invalide",
                remote: $.validator.format("{0}")
            }
        }
    });
    En espérant que cela aidera d'autres personnes.

    A bientôt

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

Discussions similaires

  1. Règle a l'arrivé d'un mail outlook
    Par flacdomatmut dans le forum VBA Outlook
    Réponses: 9
    Dernier message: 18/07/2014, 12h09
  2. Réponses: 6
    Dernier message: 13/06/2009, 21h48
  3. [WD14] Vérification champ vide + envoir mail HTML
    Par cflo56 dans le forum WinDev
    Réponses: 2
    Dernier message: 03/02/2009, 12h13
  4. vérification d'une adresse mail dans un formulaire via une regexp
    Par mattstriker dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/04/2008, 19h12

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