Aide sur une fonction javascript

Aide sur une fonction javascript - HTML/CSS - Programmation

Marsh Posté le 02-07-2012 à 10:30:32    

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.

Reply

Marsh Posté le 02-07-2012 à 10:30:32   

Reply

Marsh Posté le 02-07-2012 à 11:52:42    

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)

Reply

Marsh Posté le 02-07-2012 à 12:08:41    

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.

Reply

Marsh Posté le 02-07-2012 à 12:31:46    

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
Reply

Marsh Posté le 02-07-2012 à 13:08:20    

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".

Reply

Marsh Posté le 02-07-2012 à 14:17:43    

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

Reply

Marsh Posté le 02-07-2012 à 19:51:39    

va en chercher une sur regexlib.com


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

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed