0
votes

Jquery inarray retour faux

via ce code, je voudrais comprendre si une adresse électronique contient le domaine contenu dans un tableau, mais la fonction renvoie toujours -1 xxx


 Entrez la description de l'image ici


6 commentaires

Parce que 'dasdas@gmail.co ' (etc) n'est pas dans votre tableau.


Bien "dasdas@gmail.com" est différent de "gmail.com". Vous ne devez tester que le domaine et non l'e-mail complet.


Et index de même?


Avec cela, il fonctionne ele.val (). Split ('@') [1], merci =)


Dupliqué possible de Validation de l'e-mail JavaScript de domaines spécifiques


J'ai juste besoin si un courrier électronique contient un domaine spécifique, pas une regex pour vérifier si un e-mail est un courrier électronique.


3 Réponses :


1
votes

Ceci échoue parce que vous recherchez quelque chose (une adresse e-mail) dans un tableau qui ne le contient pas (votre tableau ne contient que des domaines).

Donc en réalité, il semble que vous souhaitiez vérifier Pas l'e-mail complet mais juste la partie de domaine. p>

afin que vous puissiez faire: p> xxx pré>

FIDDLE . P>

Si vous trouvez la gymnastique Regexp un peu illisible, vous pouvez plutôt faire: P>

let email_domain = ele.val().split('@')[1];
if (domains.filter(dmn => dmn == email_domain).length) {
    //OK...
}


1 commentaires

Merci, mais j'ai résolu avec ele.val (). Split ('@') [1]



2
votes

Vous pouvez essayer avec ce lien

code HTML: p>

var ele =jQuery('#email');


        console.log( 'Email : ' + ele.val().split('@')[1] );

        var emailarr = ["gmail.com", "live.it", "email.it", "email.com", "hotmail.it", "yahoo.it", "tiscali.it", "alice.it", "icloud.com", "outlook.com", "outlook.it", "inwind.it", "libero.it", "me.com", "mail.com", "virgilio.it", "hotmail.com", "msn.com", "ymail.com", "protonmail.com", "fastwebnet.it" , "aruba.it"];
console.log( 'Index : ' + emailarr.indexOf(ele.val().split('@')[1]) );
                            if(jQuery.inArray(ele.val().split('@')[1], emailarr) !== -1)
                            {
                                ele.removeClass('error').addClass('normal');
                            }
                            else
                            {
                                jval2.errors = true;
                                ele.removeClass('normal').addClass('error');
                            }


2 commentaires

0
votes

Votre code vérifie l'ensemble de l'e-mail, pas seulement du domaine. Ainsi, l'ajout de la vérification suivante doit corriger le bogue;

if (jQuery.inArray(ele.val().substring(ele.val().indexOf('@') + 1), emailarr) !== -1) { 
        ele.removeClass('error').addClass('normal'); 
} 
else { 
    jval2.errors = true; 
    ele.removeClass('normal').addClass('error'); 
}


0 commentaires