[JavaScript] Masques de saisie sur formulaire

Masques de saisie sur formulaire [JavaScript] - HTML/CSS - Programmation

Marsh Posté le 18-06-2012 à 19:43:01    

Bonjour à tous !  :hello:  
 
Voilà mon souci : j'ai un formulaire, dont le nombre de champs peux varier, où les utilisateurs doivent saisir des valeurs numériques, potentiellement avec des virgules.
 
Ce que je cherche à faire : empêcher les utilisateurs de saisir autre chose que des nombres à virgules, et si possible que ce script puisse fonctionner avec n'importe quel formulaire de mon site.
 
J'ai pensé à plusieurs solutions :  
1)
à chaque touche pressée, je contrôle si c'est un chiffre ou un point ou une virgule. Si ce n'est pas le cas, rien n'est saisi (et éventuellement un msgbox).
problème : je sais pas trop comment faire ce script, ni même gérer le cas où le mec mets deux virgules.
 
2)
à chaque perte de focus d'un champ, j'appelle une fonction avec en paramètre l'id du champ. Cette fonction vérifie que la valeur de ce champ est bien un nombre et efface le contenu de la cellule + msgbox.
Problème : si je clique sur le submit, va-t-il soumettre le formulaire ou la msgbox va interrompre le chargement ?
 
3)
Le mec met n'importe quoi dans son formulaire, il valide. je teste en php dans la page suivant et si ce qu'il a saisi me va pas, je le renvoie à la page précédente.
Problème : ça m'oblige à faire un code pour chaque formulaire.
 
Des suggestions ?  :??:  
 
Il me faudrait aussi, si vous avez ça sous le coude, un script assez simple pour vérifier à la validation que les champs ne sont pas vide.
J'ai bien une idée du genre

Citation :


if(machin.value != "" AND truc.value != "" AND ...........)
{submit}
else{pas submit}


 
Mais ça pourrait faire un peu lourd, non ? Un if avec 15 conditions...  :pt1cable:  Vous en pensez quoi ?
 
Merci à tous, ++

Reply

Marsh Posté le 18-06-2012 à 19:43:01   

Reply

Marsh Posté le 18-06-2012 à 23:45:10    

1) remplace les virgule par des points en PHP (si y'en a 2, supprime la 2e)
2) tout depend de ce que tu a mis dans "onsubmit"
tu peux faire tes controle javascript comme ca "onsubmit="return truc()"
 
fonction truc()
 retounera true ou false si tu veux que le forulaire soit envoyé.
 
3) Tu peux boucler pour gerer tt tes formulaire un peu comme ca:
 
for(i=0;i<docform.elements.length;i++)
 {
 if(docform[i].value=="" )
     {
     }
}
 
C'est moche, c'est recupere d'un vieux truc, mais ca marche :)

Message cité 1 fois
Message édité par GordonF_69 le 18-06-2012 à 23:46:10
Reply

Marsh Posté le 19-06-2012 à 09:31:25    

OK, je vais tester tout ça dans la semaine.
 
Merci, ++

Reply

Marsh Posté le 26-06-2012 à 15:56:16    

GordonF_69 a écrit :

1)  
for(i=0;i<docform.elements.length;i++)
 {
 if(docform[i].value=="" )
     {
     }
}
 
C'est moche, c'est recupere d'un vieux truc, mais ca marche :)


 
Super, ça marche. voici mon code plus en détails pour ne vérifier que les champs qui doivent l'être.
Je mets une class="nocheck" sur les éléments à ne pas vérifier. Puis, en javascript :
 

Citation :


function veriform()
 {
  var erreurs=0;
  for(i=0;i<document.forms["formulaire"].elements.length;i++)
  {
    if((isNaN(document.forms["formulaire"].elements[i].value) || document.forms["formulaire"].elements[i].value=="" ) && document.forms["formulaire"].elements[i].type=="text"  && document.forms["formulaire"].elements[i].className!="nocheck" )
   {
    document.forms["formulaire"].elements[i].style.backgroundColor='#FF5555';
    erreurs++;
    void window.stop();
   }
   else
   {
   document.forms["formulaire"].elements[i].style.backgroundColor='#FFFFFF';
   }
  }
  if(erreurs > 0)
  {
   alert("Certaines valeurs saisies ne sont pas valides." );
  }
  else
  {
   document.forms["formulaire"].submit() ;
  }
 }


Reply

Sujets relatifs:

Leave a Replay

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