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 :

jquery validation de mail


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2008
    Messages : 171
    Par défaut jquery validation de mail
    Bonjour,

    J'aurais aimé savoir si quelqu'un aurait des piste pour une validation de mail en jquery ???

    J'aimerais faire ceci :

    lorsque la personne saisie son mail :
    - validation du mail à la saisie sur le fait de savoir si c'est bien un mail
    - en parallèle est-il possible de faire une validation instantannée pour voir si le mail existe bien dans la base de données ???

    J'ai fais ceci mais j'ai du mal :

    mon form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <input type="text" name="email" id="email" value="Votre adresse mail" />
     
    <label for="email">
         <span class="red">*</span> Saisissez votre adresse @-mail.<br />
         <span id="result" name="result"></span>
    </label>
    <input class="submit" type="submit" name="submit_first" id="submit_first" value="" />
    mon fichier requete2.php:
    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
     
    				$email 		= 	mysql_real_escape_string($_POST['email']);
     
    				$query = "SELECT * FROM utilisateurs WHERE email_utilisateurs ='".$email."'";
    				$result = mysql_query($query);
    			    $utilisateurs = mysql_fetch_array($result);
    				$num_rows = mysql_num_rows($result);
     
     
    				if(filter_var($email, FILTER_VALIDATE_EMAIL)){
    						if($num_rows !=0){
    		                           echo '<input class="red" type=text value="email non disponible"/>';
    					    }else{
    					        echo '<input class="green" type=text value="mail disponible"/>';
    				        }				
    				}else{
    						if($email == 'Votre adresse mail'){
    						     echo '<input class="red" type=text value="Veuillez saisir un mail"/>';
    						}else{
    						     echo '<input class="red" type=text value="emal invalide"/>';
    						}				
     
    				}

    et mon fichier jquery.main.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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
        $('#submit_first').click(function(){
            //remove classes
            $('#first_step input').removeClass('error').removeClass('valid');
     
            //ckeck if inputs aren't empty
            var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
            var fields = $('#first_step input[type=text], #first_step input[type=password]');
            var error = 0;
     
         	$.post("requete2.php", { email: $("#email").val() },
    			function(data) {
    				$("#result").html(data);
            	});
     
     
            fields.each(function(){
                var value = $(this).val();
     
                if(value.length<4 || value==field_values[$(this).attr('id')] || ( $(this).attr('id')=='email' && !emailPattern.test(value) ) || $('#email').val() != $('#email2').val()){
                    $(this).addClass('error');
                    $(this).effect("shake", { times:3 }, 50);
     
                    error++;
                } else {
                    $(this).addClass('valid');
                }
            });        
     
            if(!error) {
     
                if( $('#newPass').val() != $('#newPass2').val() ) {
                        $('#first_step input[type=password]').each(function(){
                            $(this).removeClass('valid').addClass('error');
                            $(this).effect("shake", { times:3 }, 50);
                        });
     
                        return false;
                } else {
                    //update progress bar
                    $('#progress_text').html('33% Complete');
                    $('#progress').css('width','113px');
     
                    //slide steps
                    $('#first_step').slideUp();
                    $('#second_step').slideDown();     
                }			               
            } else return false;
        });
    j'arrive à valider tout ce don't j'ai besoin, j'arrive à afficher ce que je veux mon span result (email valide, invalide, disponible....) mais lorsque tout mes champs sont remplis j'ai toujours email non-disponible(déjà utilisé)et mon form est quand même validé et je passe à l'étape suivante...

    J'ai voulu faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if($('#result').val() == 'email non disponible'){
                    $(this).addClass('error');
                    $(this).effect("shake", { times:3 }, 50);
     
                    error++;
     
    }else{
                    $(this).addClass('valid');
    }
    le souci est que je n'arrive pas à le mettre au bon endroit...

    merci pour votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2008
    Messages : 171
    Par défaut récupération valeur de champs <span>
    j'aimerais faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $("span:#result").val() == "email non disponible"
    ou un truc du genre.

    En gros récupérer ma valeur du span, ou se trouve dedans (email non disponible ou mail disponible ou mail invalide...)

    mais je pense mal faire avec ce span...

    merci pour votre aide

  3. #3
    Membre expérimenté Avatar de eckerdecker
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 134
    Par défaut
    Salut,

    Je n'ai pas tout regardé, mais en tout cas pour ton problème de span il est assez simple : .val() ne peut s'utiliser que sur des éléments de formulaires, pour récupéré le texte de ton span tu peux utiliser .text().

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2008
    Messages : 171
    Par défaut
    ok ok merci pour ta réponse mais ia une synthaxe particulière....?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $('#result').text() == "email non disponible"
    comme ça, ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $('span:#result').text() == "email non disponible"
    peut-être comme ceci...?

    pour info je débute en jquery mais là jvois vraiment pas...

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2008
    Messages : 171
    Par défaut
    sinon j'ai peut-être pas été assez clair dans mon explication et dans ce que je veux....

    J'ai un champ input pour le mail.

    Losqur'il click sur valider, j'ai jquery qui test le mail, s'il est valid le champ input devient vert sinon il devient rouge.

    En plus de ça j'aimerais quand je valid par le même boutton, qu'il fasse la même chose avec le mail mais avec le plus de controler si le mail existe dans une base de données....

    comment faire en jquery ?

    faut-il tout faire en jquery ? ou comme je l'ai fais, passer par un fichier php intermédiaire qui tst le mail en base, la validité du mail et me renvoi une réponse dans ce fameux span dans le même formulaire....


    J'ai pensé en jquery tester la valeur de ce span pour effectuer mon jquery qui rend mon champ input rouge ou vert si c'est good.

    je galère pas mal.

    des idées.....

    merci par avande de votre retour

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Désolé, mais je n'ai pas vraiment l'impression que tu comprennes ce que tu fais...

    cette syntaxe n'existe tout simplement pas... il faut utiliser l'une des deux suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $('#result') // A privilégier puisqu'un id doit être unique
    $('span#result')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#result').text() == "email non disponible"
    Ce serait correct si le contenu de ton span était bien le message, mais si j'en crois ton code PHP
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<input class="green" type=text value="mail disponible"/>';
    ton span contient juste un input (je vois d'ailleurs pas trop l'intérêt mais bon...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#result').find('input').val() == "email non disponible"
    correspondrait mieux à ton code...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. Plugin JQuery Validate+Ajax
    Par HekThor dans le forum jQuery
    Réponses: 2
    Dernier message: 01/11/2009, 18h11
  2. Plugin JQuery Validate+Ajax
    Par HekThor dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/11/2009, 17h53
  3. [RegEx] Problème de validation de mail
    Par zadlaure dans le forum Langage
    Réponses: 7
    Dernier message: 25/05/2007, 13h01
  4. [Mail] valider par mail un formulaire et fonction rand
    Par guillaume2vo dans le forum Langage
    Réponses: 2
    Dernier message: 17/09/2006, 20h37

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