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

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Probleme avec fonction javascript.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme avec fonction javascript.

n°2166671
mozvillat
Posté le 04-12-2012 à 15:37:08  profilanswer
 

Bonjour à tous,
 
Je rencontre un petit probleme avec une fonction javascript dans un formulaire.
Je souhaite verifier avant envoi du formulaire les valeurs saisies par l'utilisateur.
 
le champ du formulaire (VAL) doit être numérique et comporter plus de 12 caracteres (j'ai mis ces conditions pour mes tests, mais réellement, les vérifications devraient être valeur numérique obligatoire et valeur supérieur à 0.5)
 
Voici le code de la fonction, de la zone de saisie ainsi que du bouton submit
 

Code :
  1. Fonction JS :
  2. <!-- Script verification valeur nombre d'heures -->
  3. <script>
  4. function verif_VAL(VAL) {
  5.   champ = document.getElementById("VAL" );
  6.   var valeur = champ.value;
  7. if(!(/^\d+$/.test(valeur))) {
  8.     alert("Le nombre d'heure doit être une valeur numérique" );
  9. return false;}
  10. if(valeur.length<12) {
  11.     alert("Test : la valeur saisie (nombre d'heures) fait moins de 12 caractères..." );
  12. return false;}
  13. else
  14. {
  15. return true;
  16. }
  17. }
  18. </script>
  19. <!-- Fin du script verification nolbre d'heures -->
  20. Balise du formulaire
  21. <tr>
  22.  <td>Nombre d'heures (1/2 heure = 0.5)  :</td>
  23.  <td><input type="text" require="true" id="VAL" label="Veuillez saisir le nombre d'heures" value="" name="nbr_minutes" /></td>
  24. </tr>
  25. Bouton de validation :
  26. <input type="submit" name="validation_finale" size="5" value="Ajouter" onClick="verif_VAL('VAL');" />


 
 
Les alertes fonctionnent bien mais le return false; n'a aucun effet et le formulaire est tout de même envoyé....
 
Merci d'avance pour votre aide !

mood
Publicité
Posté le 04-12-2012 à 15:37:08  profilanswer
 

n°2166697
x1fr
Posté le 04-12-2012 à 16:56:38  profilanswer
 

peut être en utilisant

Code :
  1. onClick="return verif_VAL('VAL');"


?

 

Sinon en plaçant la vérification non pas sur le onClick du submit, mais plutôt sur le onSubmit du formulaire

 

Edit : au passage, attention sur la ligne :

Code :
  1. champ = document.getElementById("VAL" );
 

Le VAL est correct car cette valeur "en dur" correspond également au nom du champ input, mais j'imagine qu'à la base l'idée était d'utiliser la variable VAL reçue en paramètre dans la fonction, auquel cas il faudrait retirer les doubles quotes


Message édité par x1fr le 04-12-2012 à 17:03:26

---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
n°2166701
mozvillat
Posté le 04-12-2012 à 17:13:42  profilanswer
 

merci x1fr ! en mettant return sur le onclick c'est good !!!
 
il faut néanmoins que je revois l'expression reguliere pour n'avoir que du numérique, sachant que la valeur mini est 0.5 ou 0,5. Celle que j'ai mise actuellement pose probleme avec le point ou la virgule....

n°2166716
x1fr
Posté le 04-12-2012 à 17:52:09  profilanswer
 

t'as essayé de regarder du coté de jquery?


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
n°2166723
gatsu35
Blablaté par Harko
Posté le 04-12-2012 à 19:07:25  profilanswer
 

Tu pourrais à la rigueur faire un replace de la , par un . et tester simplement l'égalité par un parseFloat:  
 
valeur == parseFloat((valeur+"" ).replace(/,/g,'.'));


---------------
Blablaté par Harko
n°2166858
mozvillat
Posté le 05-12-2012 à 10:38:39  profilanswer
 

POurriez vous m'expliquer ce qui cloche la dedans. J'ai essayé de faire 2 verif distinctes (je sais, c'est un peu bourrin, mais c'etait pour comprendre le fonctionnement !!
 

Code :
  1. <script>
  2. function verif_VAL(VAL) {
  3.   champ = document.getElementById("VAL" );
  4.   var valeur = champ.value;
  5. if(!(/^[0-9\.\,]+$/.test(valeur))) {
  6.     alert("Le nombre d'heure doit être une valeur numérique" );
  7. return false;}
  8. if(valeur<'0,5') {
  9.     alert("La récupération minimale est d'une demi heure (soit 0.5)" );
  10. return false;}
  11. if(valeur<'0.5') {
  12.     alert("LAAAAAAAAAAAAAAAAAAAAAAA récupération minimale est d'une demi heure (soit 0.5)" );
  13. return false;}
  14. else
  15. {
  16. return true;
  17. }
  18. }
  19. </script>


 
en fait si je saisi 0.5, c'est ok, 0.4 la fonction m'indique bien que la valeur est en dessous du quota défini. par contre si je met 0,4 ou 0,5 alors j'ai l'alert JS qui se declenche...et bizarrement, l'alerte est celle de la 2e verif (celle avec tous les AAAAA) qui devrait verifier pour le point et non la virgule ?
 
Merci pour votre aide !
 
 
edit : en fait je viens de voir que ma fonction doit etre legerement differente... je test uniquement les valeurs inferieures à 0.5 (ou 0,5)... mais je dois "brider" la saisie avec 0.5 en mini et les valeurs superieures doivent etre des nombres entiers OU par demi... (valeur correctes : 0.5,1,1.5,2,2.5,3,3.5,......). si on saisie 2.1 ou 2,1 je dois bloquer.... je pense que ca va etre un peu plus compliqué que ce que je pensais....


Message édité par mozvillat le 05-12-2012 à 10:50:37
n°2166862
gatsu35
Blablaté par Harko
Posté le 05-12-2012 à 10:59:02  profilanswer
 

Code :
  1. function verif_VAL(VAL) {
  2.    champ = document.getElementById("VAL" );
  3.   var valeur = champ.value;
  4.   var cleanedValeur = (valeur+"" ).replace(",","." )*1;
  5.   if(!isNaN(cleanedValeur)) {
  6.       alert("Le nombre d'heure doit être une valeur numérique" );
  7.       return false;
  8.   }
  9.   if(cleanedValeur<0.5) {
  10.       alert("La récupération minimale est d'une demi heure (soit 0.5)" );
  11.       return false;
  12.   }
  13.   return true;
  14. }


 
Voila, on fait pas des tests d'infériorité ou supériorité avec des strings versus des nombres :)


---------------
Blablaté par Harko
n°2166867
mozvillat
Posté le 05-12-2012 à 11:29:48  profilanswer
 

Merci ! par contre j'ai modifié la ligne

Code :
  1. if(!isNaN(cleanedValeur)) {


par

Code :
  1. if(isNaN(cleanedValeur)) {


 
Sinon il attendait toujours une valeur non numerique !!!!!
 
Mais c'est pas grand chose !!!
 
Sais tu si il existe une fonction JS qui permettrait de tester le nombre pour n'avoir que des nombres entiers ou se finissant par .5 (ou,5) ?

n°2166868
gatsu35
Blablaté par Harko
Posté le 05-12-2012 à 11:33:07  profilanswer
 

ah oui désolé


---------------
Blablaté par Harko
n°2166869
gatsu35
Blablaté par Harko
Posté le 05-12-2012 à 11:37:21  profilanswer
 

bah en passant par une regexp :

 
Code :
  1. function isFullOrDot5(valeur) {
  2. return /^\d+([,.]5)?$/.test(valeur+"" );
  3. }


Message édité par gatsu35 le 05-12-2012 à 11:37:33

---------------
Blablaté par Harko
mood
Publicité
Posté le 05-12-2012 à 11:37:21  profilanswer
 

n°2166874
mozvillat
Posté le 05-12-2012 à 11:52:13  profilanswer
 

Merci pour votre aide, je vais regarder pour integrer la regex dans une condition (if) afin de tester.
 
C'est dans ces moments la que je me rends compte que je suis vraiment une buse en JS !!


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

  Probleme avec fonction javascript.

 

Sujets relatifs
Problème formule à plusieurs conditions[javascript] problème sur fonction SWITCH
Problème boutons radio fonction javascriptProblème fonction javascript
Probleme parametre de fonction javascriptproblème de fonction javascript
problème javascript pour déclencher une fonction dans une frameProblème Passage de Paramètres à une fonction Javascript
[Javascript] Petit problème de fonction[JAVASCRIPT] Problème d'accès à une frame dans une fonction (résolu)
Plus de sujets relatifs à : Probleme avec fonction javascript.


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