Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1633 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Aide sur une fonction javascript

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide sur une fonction javascript

n°2147719
mozvillat
Posté le 02-07-2012 à 10:30:32  profilanswer
 

Bonjour à tous,
 
Je rencontre un petit probleme de verification de formulaire en javascript.
 
Voici le code (tout simple) du formulaire :
 

Code :
  1. <form id="formcontact" name="formcontact" method="post" action="./traitement_formulaires.php" onsubmit="return checkForm()">
  2. <table>
  3. <tr><td>Indiquez nous votre nom</td></tr>
  4. <tr><td><input type="text" id="nom" name="nom" value="" />&nbsp;</td></tr>
  5. <tr><td>Indiquez nous votre adresse e-mail :</td></tr>
  6. <tr><td><input type="text" id="mail" name="mail"/></td></tr>
  7. <tr><td>Objet de votre demande</td></tr>
  8. <tr><td><textarea name="objet" rows="6" cols="50"></textarea></td></tr>
  9. <tr><td><input type="submit" name="submit_mail" value="envoyer"/></td></tr>
  10. </table>
  11. </form>


 
 
la fonction checkForm() est la suivante :
 

Code :
  1. function checkForm(){
  2. var formcontact=document.getElementById('formcontact');
  3. var inputs=formcontact.getElementsByTagName('input');
  4. for(i=0;i<inputs.length;i++){
  5. if(inputs.item(i).value=="" ){
  6. alert("veuillez remplir tous les champs" );
  7. inputs.item(i).focus();
  8. return false;
  9. }
  10. }
  11. var textareas=formcontact.getElementsByTagName('textarea');
  12. for(i=0;i<textareas.length;i++){
  13. if(textareas.item(i).value=="" ){
  14. alert("veuillez indiquer l'objet de votre demande" );
  15. textareas.item(i).focus();
  16. return false;
  17. }
  18. }
  19. var mail=document.getElementsByName("mail" );
  20. var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
  21. if (!filter.document(mail.value)) {
  22. alert("L'adresse mail n'est pas valide." );
  23. mail.focus();
  24. return false;
  25. }
  26. return true;
  27. }


 
les 2 premieres partie (verification sur les champs input et textarea fonctionnent bien. Si le champ est vide, j'ai bien mon alert.
 
Par contre, la verification sur l'adresse mail ne foçnctionne pas...
 
Auriez vous une idée ?? merci d'avance.

mood
Publicité
Posté le 02-07-2012 à 10:30:32  profilanswer
 

n°2147744
Riokmij
Blink and you're dead
Posté le 02-07-2012 à 11:52:42  profilanswer
 

2 problèmes qui empêches la validation de fonctionner (et un troisième qui fait que la validation ne sera pas correcte dans pas mal de cas) :
 
Premier problème :

Code :
  1. var mail = document.getElementById("mail" )


 
Comme tu as un id sur ton <input>, autant l'utiliser, c'est plus fiable. Si tu veux vraiment utiliser document.getElementsByName, ne pas oublier que ça retourne un tableau d'élements (d'où le 's' à element dans le nom de la fonction). Ça donnerait "document.getElementsByName("email" )[0]"
 
Deuxième problème :
 

Code :
  1. if (!filter.test(mail.value))


 
La fonction à appeler est "test".
 
 
Maintenant, il y a aussi plusieurs problèmes dans ton expression régulière. Par exemple "toto+titi@test.com" ne passera pas la validation, alors que c'est une adresse correcte. Autre problème : "toto@aaaa" ou "toto@a@a" par exemple seront acceptés (le problème ici est que le '.' n'est pas escapé dans la deuxième partie de ta regexp, ça va donc matcher sur n'importe quel caractère)

n°2147750
mozvillat
Posté le 02-07-2012 à 12:08:41  profilanswer
 

Donc, si je me base sur l'ID du input et que je laisse  

Code :
  1. var mail = document.getElementById("mail" )


Ca c'est bon ?
 
Pour le 2e probleme je ne comprend pas trop.  
 
Pour l'expression reguliere, je regarderai apres, car la je n'ai aucune verif sur ce champ mail !!!
 
Merci pour ton aide !
 
Ps : desole je suis vraiment mauvais en javascript...je l'utilise tres peu.

n°2147762
mozvillat
Posté le 02-07-2012 à 12:31:46  profilanswer
 

j'ai avancé grace à ton aide !! me reste plus qu'a refaire le regex pour que ca soit bon !!!! merci  encore !
 
J'ai corrigé mon expression reguliere. Les 2 dernieres adresses que tu donnes bloquent bien.
 
Par contre toto+titi@test.com bloque aussi. On peut avoir un + dans une adresse mail ? ou tu voulais dire tototiti@test.com ?
 
Si c'est le cas, ca fonctionne bien !! sinon, faut que je me creuse encore un peu la cervelle !!!!


Message édité par mozvillat le 02-07-2012 à 12:36:49
n°2147766
Riokmij
Blink and you're dead
Posté le 02-07-2012 à 13:08:20  profilanswer
 

Le '+' est autorisé dans une adresse mail, c'est d'ailleurs mis à profit par certains services (gmail par exemple) pour fournir un tri automatique.
 
Par exemple, toto+titi@gmail.com ira dans la boite de toto@gmail.com, en ajoutant automatiquement le tag "titi".

n°2147777
mozvillat
Posté le 02-07-2012 à 14:17:43  profilanswer
 

Ah ! je ne connaissais pas cette astuce... bon je vais me remettre sur l'expression reguliere alors !!!!

n°2147814
gatsu35
Blablaté par Harko
Posté le 02-07-2012 à 19:51:39  profilanswer
 

va en chercher une sur regexlib.com


---------------
Blablaté par Harko

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Aide sur une fonction javascript

 

Sujets relatifs
[VB/VBA/VBS]Trouver une référence dans plusieurs centaines de wordCMS UPSILON aide
Aide en html[JavaScript] Masques de saisie sur formulaire
RegExp Javascriptfonction mail() ne fonctionne pas
Recupération du résultat d'une fonctionBesoin d'aide java
[C] Aide pour petit exo 2appeller une fonction en javascript à l'aide d'un variable
Plus de sujets relatifs à : Aide sur une fonction javascript


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR