Problème:boite de dialogue alert() avec chrome+safari - [Résolu]

Problème:boite de dialogue alert() avec chrome+safari - [Résolu] - HTML/CSS - Programmation

Marsh Posté le 20-10-2009 à 17:11:06    

Bonjour,
 
j'ai un petit souci avec le javascript sous google chrome et safari (pas encore testé sous firefox).
 
Je m'explique : je suis entrain de créer un nouveau site web pour notre société et il y a une partie avec un formulaire. Dans ce formulaire je dois controler le contenu avant de l'envoyer. C'est-à-dire vérifier si tous les champs sont remplis, etc.
Si un champ manque, j'ai une boite de dialoque (fonction alert()) qui s'affiche en me renseignant les zones vides à remplir.
 
Sous IE8 cela fonctionne trés bien, mais par contre sous Chrome ou Safari, lorsque je valide le formulaire, même quant certains champs ou bien tous les champs sont vides, cela renvoi un formulaire sans aucunes données sans que ma boite de dialogue apparaisse.
 
Est-ce que quelqu'un a une idée d'où le problème peut venir?
 
voici le code du formulaire ("envoi.inc.php" récupère les données et les transmets par mail vers une adresse en interne)  :


<form action="inc/envoi.inc.php" method="post" enctype="multipart/form-data" name="formulaire" onsubmit="MM_validateForm('nom','','R','prenom','','R','adresse','','R','numero','','R','cp','','R','commune','','R','telephone','','R','email','','RisEmail');return document.MM_returnValue">
 
Nom :<br /><input type="text" name="nom" size=30><span class="Style25">*</span><br />
Prénom :<br /><input type="text" name="prenom" size=30><span class="Style25">*</span><br />
Adresse :<br /><input type="text" name="adresse" size=30><span class="Style25">*</span> N° : <input type="text" name="numero" size="4"><span class="Style25">*</span><br />
Code Postal :<br /><input type="text" name="cp" size="4"><span class="Style25">*</span><br />
Commune :<br /><input type="text" name="commune" size=30><span class="Style25">*</span><br />
Tél :<br /><input type="text" name="telephone" size=30><span class="Style25">*</span><br />
E-mail :<br /><input type="text" name="email" size=30><span class="Style25">*</span><br />
Concerne :  
 <SELECT name="liste" size="1" class="style1">
 <OPTION VALUE="0">Choisissez</OPTION>
 <OPTION VALUE="1">Un</OPTION>
 <OPTION VALUE="2">Deux</OPTION>
 <OPTION VALUE="3">Autres</OPTION>
 </SELECT><br />
Votre message :<br /><textarea name="commentaire" rows="10" cols="50"></textarea><br />
<input class="style1" type="submit" name="Envoyer" VALUE="Envoyer">
<input class="style1" type="reset" VALUE="Effacer">
 
</form>


 
ici le script de vérification des champs :
 

function MM_validateForm()
 {
 if (document.getElementById)
  {
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3)
   {
   test=args[i+2];
   val=document.getElementById(args[i]);
   if (val)
    {
    nm=val.name;
    if ((val=val.value)!="" )
     {
     if (test.indexOf('isEmail')!=-1)
      {
      p=val.indexOf('@');
      if (p<1 || p==(val.length-1)) errors+='- '+nm+' doit contenir une adresse email valide.\n';
      }
     else if (test!='R')
      {
      num = parseFloat(val);
      if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
      if (test.indexOf('inRange') != -1)
       {
       p=test.indexOf(':');
       min=test.substring(8,p);
       max=test.substring(p+1);
       if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
       }
      }
     }
    else if (test.charAt(0) == 'R') errors += '- '+nm+' est requis.\n';
    }
   } if (errors) alert('Les erreurs suivantes doivent etre corrigées:\n'+errors);
   document.MM_returnValue = (errors == '');
  }
 }


Message édité par recep le 21-10-2009 à 09:07:50
Reply

Marsh Posté le 20-10-2009 à 17:11:06   

Reply

Marsh Posté le 20-10-2009 à 18:32:11    

up ?

Reply

Marsh Posté le 20-10-2009 à 19:23:59    

Hmm, plutôt que :

Code :
  1. val=document.getElementById(args[i]);


Je mettrais ça à la place :

Code :
  1. val=document.formulaire[args[i]]


 

Reply

Marsh Posté le 20-10-2009 à 21:34:43    

tpierron a écrit :

Hmm, plutôt que :

Code :
  1. val=document.getElementById(args[i]);


Je mettrais ça à la place :

Code :
  1. val=document.formulaire[args[i]]


 


 
c'est pas ça qui va régler mon problème ?

Reply

Marsh Posté le 20-10-2009 à 22:54:01    

Bah, faire des getElementById sur des éléments qui n'ont pas d'ID, faut pas s'étonner si ça ne fonctionne que sur IE...

Reply

Marsh Posté le 21-10-2009 à 09:05:21    

tpierron a écrit :

Bah, faire des getElementById sur des éléments qui n'ont pas d'ID, faut pas s'étonner si ça ne fonctionne que sur IE...


Je te remercie beaucoup, maintenant ça fonctionne trés bien !

Reply

Sujets relatifs:

Leave a Replay

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