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

  FORUM HardWare.fr
  Programmation

  [JAVASCRIPT] textareas / validation de forms, AIDE!!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVASCRIPT] textareas / validation de forms, AIDE!!!

n°59055
k666
dites non à petitmou
Posté le 11-09-2001 à 15:11:59  profilanswer
 

salut à vous,
je veux faire quatre fonctions js:
 
- isEntier
- isFlottant
- isUnedate
- isTexte
- isMail
 
j'aimerai bien en fait le faire par cette technique:
 
- isEntier: je convertis la chaine passée en ENTIER puis en CHAINE et je compare l'entrée à la sortie
 
- isFlottant: je convertis la chaine passée en FLOTTANT puis en CHAINE et je compare ...
 
- isUnedate: comment faire le plus simple possible??
 
- isTexte: je m'en fous ;)
 
donc 2 QUESTIONS :  
-     comment on reconverti en chaine de char un entier ou flottant ou date ???
 
-     comment on fait pour tester la validité d'une date rentrée et si possible la remettre en JJ/MM/AAAA ????
 
voila merci bokoo pour votre aide qui j'espère servira à bcp de monde :)

 

[edtdd]--Message édité par k666--[/edtdd]

mood
Publicité
Posté le 11-09-2001 à 15:11:59  profilanswer
 

n°59067
_epegasus_
Posté le 11-09-2001 à 16:25:50  profilanswer
 

"comment on reconverti en chaine de char un entier ou flottant ou date ??? "
 
Si i est un entier ou un float,
<>
chaine=i+"";
<>
 
"comment on fait pour tester la validité d'une date rentrée et si possible la remettre en JJ/MM/AAAA ???? "
 
Bah la ca depends du format d'entree de ta date ... ??
 
voili voila :)

n°59073
k666
dites non à petitmou
Posté le 11-09-2001 à 17:22:09  profilanswer
 

merci bien mon cher ami :)
c la fin du monde, mais c pas la fin du javascript qd mêê ;)
et pour les dates, ya pas des fonctions préfaties déjà qui puissent dire si la date est valide, en lui passant un autre paramètre du style 'type de date' ???????
merci :)

n°59107
_epegasus_
Posté le 12-09-2001 à 08:49:46  profilanswer
 

Pas a ma conniassance ... mais comme dirait l'autre : "On se sort les doigts du cul et on se motive !" ... meme si les evenements actuel ne sont pas tres motivant :(

n°59113
art_dupond
je suis neuneu... oui oui !!
Posté le 12-09-2001 à 09:41:59  profilanswer
 

fais toujours un tour ici pour les dates
 
http://www.w3schools.com/js/js_datetime.asp

n°59167
k666
dites non à petitmou
Posté le 12-09-2001 à 13:06:15  profilanswer
 

j'ai fait un truc pourrave,
ça marche que pour les input type text car les checkboxs et radio ont leurs propres règles
on peut indiquer: le nom du champ, la description, le type de variables, le requis/pas requis
 
à qui n'en veuille:
voilà le code à inclure:

Code :
  1. function isEntier(koi)
  2. {
  3. var tmp = koi;
  4. if ( ( tmp != "" )  && ( tmp != null ) )
  5. {
  6. tmp = parseInt(tmp);
  7. tmp = tmp + "";
  8. if ( ( tmp == koi )||( ("0"+tmp) == koi ) )
  9.  return 1;
  10. else
  11.  return 0;
  12. }
  13. else return -1;
  14. }
  15. function isFlottant(koi)
  16. {
  17. var tmp = koi;
  18. if ( ( tmp != "" )  && ( tmp != null ) )
  19. {
  20. tmp = parseFloat(tmp);
  21. tmp = tmp + "";
  22. if (tmp == koi)
  23.  return 1;
  24. else
  25.  return 0;
  26. }
  27. else return -1;
  28. }
  29. function isUnedate(koi)
  30. {
  31. var tmp = koi;
  32. var aze = 0;
  33. if ( ( tmp != "" ) && ( tmp != null ) )
  34. {
  35. var tmp = koi.split("/" );
  36. if ( tmp.length == 3 )
  37.  {
  38.  for (k = 0; k < 3; k ++)
  39.   {
  40.   if (isEntier(tmp[k]) == 1)
  41.    {aze++;};
  42.   };
  43.  return((aze == 3) ? 1:0);
  44.  };
  45. else return 0;
  46. }
  47. else return -1;
  48. }
  49. function isTexte(koi)
  50. {
  51. var tmp = koi;
  52. if ( ( tmp != "" )  && ( tmp != null ) )
  53. return 1;
  54. else
  55. return -1;
  56. }
  57. function check_up(what)
  58. {
  59. var datz = what.split("," );
  60. var erreurz = "";
  61. tmpz = new Array(4);
  62. for(i=0;i<datz.length;i++)
  63. {
  64. tmpz = datz[i].split("|" );
  65. if(tmpz.length == 5)
  66.  {
  67.  switch(tmpz[4])
  68.   {
  69.   case "c":
  70.     alert("checkbox" );
  71.     break;
  72.   case "r":
  73.     alert("radio" );
  74.     break;
  75.   default :
  76.     contenu_actuel = document.forms[form_name].elements[tmpz[0]].value;
  77.     description = tmpz[1];
  78.     requis = tmpz[2];
  79.     type_data = tmpz[3];
  80.     if (requis=="1" )
  81.      {
  82.      switch(type_data)
  83.       {
  84.       case "i":
  85.        switch(isEntier(contenu_actuel))
  86.         {
  87.         case -1: erreurz = erreurz + "\nle champ " + description + " n'a pas été renseigné ...";break;
  88.         case 0 : erreurz = erreurz + "\nle champ " + description + " n'a pas le bon format ...";break;
  89.         //case 1 : erreurz = erreurz + "\nle champ " + description + " est bien rempli ...";break;
  90.         };
  91.        break;
  92.       case "f":
  93.        switch(isFlottant(contenu_actuel))
  94.         {
  95.         case -1: erreurz = erreurz + "\nle champ " + description + " n'a pas été renseigné ...";break;
  96.         case 0 : erreurz = erreurz + "\nle champ " + description + " n'a pas le bon format ...";break;
  97.         //case 1 : erreurz = erreurz + "\nle champ " + description + " est bien rempli ...";break;
  98.         };
  99.        break;
  100.       case "d":
  101.        switch(isUnedate(contenu_actuel))
  102.         {
  103.         case -1: erreurz = erreurz + "\nle champ " + description + " n'a pas été renseigné ...";break;
  104.         case 0 : erreurz = erreurz + "\nle champ " + description + " n'a pas le bon format ...";break;
  105.         //case 1 : erreurz = erreurz + "\nle champ " + description + " est bien rempli ...";break;
  106.         };
  107.        break;
  108.       default:
  109.        switch(isTexte(contenu_actuel))
  110.         {
  111.         case -1: erreurz = erreurz + "\nle champ " + description + " n'a pas été renseigné ...";break;
  112.         case 0 : erreurz = erreurz + "\nle champ " + description + " n'a pas le bon format ...";break;
  113.         //case 1 : erreurz = erreurz + "\nle champ " + description + " est bien rempli ...";break;
  114.         };
  115.       }
  116.      }
  117.     else
  118.      {
  119.      switch(type_data)
  120.       {
  121.       case "i":
  122.        switch(isEntier(contenu_actuel))
  123.         {
  124.         case 0 : erreurz = erreurz + "\nle champ " + description + " n'a pas le bon format ...";break;
  125.         //case 1 : erreurz = erreurz + "\nle champ " + description + " est bien rempli ...";break;
  126.         };
  127.        break;
  128.       case "f":
  129.        switch(isFlottant(contenu_actuel))
  130.         {
  131.         case 0 : erreurz = erreurz + "\nle champ " + description + " n'a pas le bon format ...";break;
  132.         //case 1 : erreurz = erreurz + "\nle champ " + description + " est bien rempli ...";break;
  133.         };
  134.        break;
  135.       case "d":
  136.        switch(isUnedate(contenu_actuel))
  137.         {
  138.         case 0 : erreurz = erreurz + "\nle champ " + description + " n'a pas le bon format ...";break;
  139.         //case 1 : erreurz = erreurz + "\nle champ " + description + " est bien rempli ...";break;
  140.         };
  141.        break;
  142.       default:
  143.        switch(isTexte(contenu_actuel))
  144.         {
  145.         case 0 : erreurz = erreurz + "\nle champ " + description + " n'a pas le bon format ...";break;
  146.         //case 1 : erreurz = erreurz + "\nle champ " + description + " est bien rempli ...";break;
  147.         };
  148.       }
  149.      }
  150.   }
  151.  }
  152. }
  153. if ( erreurz == "" )
  154. {
  155. document.forms[formulaire].submit();
  156. }
  157. else
  158. {
  159. alert(erreurz);
  160. erreurz = "";
  161. }
  162. }


 
et dans la page des formulaires, fo mettre:
 

Code :
  1. <html>
  2. <body>
  3.  <script src="valideur.js"></script>
  4.  <script language="javascript">
  5.  //model de validation: ( nom_du_champ|desc_du_champ|requis:1_pasrequis:0|type_float:f_charz:c_int:i_d:date ,...|type_de_champ_t:text_c:checkbox_r:radio...)
  6.  var fields_toCheck = "kakz|champ sympa|1|t|x,kakz2|champ sympa|1|i|x,kakz3|champ sympa|1|d|x";
  7.  var form_name = "formulaire";
  8.  </script>
  9. <form name=formulaire onsubmit="javascript:check_up(fields_toCheck);return false;">
  10. <input type=text name=kakz value="">texte<br>
  11. <input type=text name=kakz2 value="">numméro<br>
  12. <input type=text name=kakz3 value="">date<br>
  13. <input type=submit value=ok>
  14. </form>
  15. <script>
  16. //check_up(chaine);
  17. //alert(erreurz);
  18. </script>
  19. </body>
  20. </html>


 
voilà, salut

 

[edtdd]--Message édité par k666--[/edtdd]

n°59812
k666
dites non à petitmou
Posté le 17-09-2001 à 09:00:40  profilanswer
 

up pour tous les flémards ;)
j'ai rajouté isMail()
je posterai staprème ;)

n°59839
FLY LM
Posté le 17-09-2001 à 12:13:53  profilanswer
 

Une autre façon de procéder avec les expressions régulières :
 
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="Javascript">
 
function isEntier()
{
 var tmp;
 tmp = prompt('Test Entier');
 p = /^([\d]+)$/
 if(resultat = tmp.match(p))
 {
  document.write("La chaîne est un entier" );
 }
 else
 {
  document.write("La chaîne n'est pas un entier" );
 }
}
 
function isFlottant()
{
 var tmp;
 tmp = prompt('Test Flottant');
 p = /^([\d]+)(,|.)([\d]+)$/
 if(resultat = tmp.match(p))
 {
  document.write("La chaîne est un flottant" );
 }
 else
 {
  document.write("La chaîne n'est pas un flottant" );
 }
}
 
function isTexte()
{
 var tmp;
 tmp = prompt('Test Texte');
 p = /([a-zA-Z0-9]+)/
 if(resultat = tmp.match(p))
 {
  document.write("La chaîne est un texte" );
 }
 else
 {
  document.write("La chaîne n'est pas un texte" );
 }
}
 
function isDate()
{
 var tmp;
 tmp = prompt('Test une date de la forme d/m/y ou d-m-y');
 p = /^(([0-2]?[0-9])|(30|31))(\/|-)(([0]?[0-9])|(10|11|12))(\/|-)(([0-9]{4})|([0-9]{2}))$/
 if(resultat = tmp.match(p))
 {
  document.write("La chaîne est une date" );
 }
 else
 {
  document.write("La chaîne n'est pas une date" );
 }
}
 
function isMail()
{
 var tmp;
 tmp = prompt('Test email');
 p = /^([^\s]+)@([^\s]+).(com|net|fr|org|prout)$/
 if(resultat = tmp.match(p))
 {
  document.write("La chaîne est une adresse email" );
 }
 else
 {
  document.write("La chaîne n'est pas une adresse email" );
 }
}
 
</script>
<link rel="stylesheet" type="text/css" href="nav.css">
</head>
<body bgcolor="#FFFFFF">
   <a href="javascript:isTexte()";> Tester un texte (tout sauf vide)</a><br><br>
   <a href="javascript:isEntier()";> Tester un entier (bha un entier quoi)</a><br><br>
   <a href="javascript:isFlottant()";> Tester un flottant (séparateur , ou .)</a><br><br>
   <a href="javascript:isDate()";> Tester une date (jour-mois-année -> séparateur / ou -)</a><br><br>
   <a href="javascript:isMail()";> Tester une adresse Email </a><br><br>
</body>
</html>
 
J'adore les RegEXP....

n°59994
k666
dites non à petitmou
Posté le 18-09-2001 à 00:46:46  profilanswer
 

fly lm a écrit a écrit :

p = /^(([0-2]?[0-9])|(30|31))(\/|-)(([0]?[0-9])|(10|11|12))(\/|-)(([0-9]{4})|([0-9]{2}))$/




 
etc....?
comment ça marche ce truc? t'as pas une doc sur la définition des regExp en JS ???
c cool c assez propre ton truc donc ça me plairait d'en voir :)
voilà merci et  :) vive la fin du monde :)

n°60013
FLY LM
Posté le 18-09-2001 à 09:56:31  profilanswer
 

C'est très simple quand tu as compris le truc. Je vais essayer de t'expliquer :
 
Voici le motif (pattern) que tu vas tenter de reconnaître avec match(p)
 
p = /^(([0-2]?[0-9])|(30|31))(\/|-)(([0]?[0-9])|(10|11|12))(\/|-)(([0-9]{4})|([0-9]{2}))$/
 
----------
 
Ton motif se trouve entre / et /
Le ^ correspond au début de ta chaîne, le $ à la fin. Ils ne sont pas toujours nécessaires, tout dépend de ce que tu cherches à reconnaître.
Les [] permettent de définir les caractères autorisés à un endroit donné de la chaîne en précisant des intervalles.
 
exemple :  
[a-z] autorise [abcdef....rstuvwxyz]
[0-9] autorise [0123456789]
 
Les accolades {} précise le nombre de foi ou les caractères autorisés peuvent se répéter.
 
exemple :
[0-9]{4} reconnait 2000 mais pas 350
[0-9]{2} va reconnaitre 20 mais pas 350 ni 1 ou 2000...
Mais tu peux encore compliquer...
 
le ? veut dire que le caractère qui précède est répété au plus une fois, ce qui le rend facultatif.
 
exemple :
[0-2]?[0-9] sera à même de reconnaitre 01,02,...,09,...,5,11,23... mais pas 40.
 
Je te donne des liens qui te donnerons quelques règles pour utiliser les REGEXP, car c'est très long à expliquer (et cela peut changer suivant les moteurs de REGEXP).
 
En gros, voilà quelques adresses sympas (même si c'est pas du JS) qui t'aiderons à comprendre :
 
http://developpeur.journaldunet.co [...] preg.shtml
http://www.phpinfo.net/?p=articles&rub=regex
http://www.delorie.com/gnu/docs/rx/rx_toc.html
 
Bonne continuation

mood
Publicité
Posté le 18-09-2001 à 09:56:31  profilanswer
 

n°60014
FLY LM
Posté le 18-09-2001 à 09:59:40  profilanswer
 

Ah oui,  
 
p = /^(([0-2]?[0-9])|(30|31))(\/|-)(([0]?[0-9])|(10|11|12))(\/|-)(([0-9]{4})|([0-9]{2}))$/
 
correspond à :
 
p = /^(JOUR compris entre 0 et 31)séparé par( / ou - )(MOIS compris entre 0 et 12)séparé par( / ou - )(ANNEE en 2 ou 4 chiffres)$/

 

[edtdd]--Message édité par fly lm--[/edtdd]

n°60025
Gonzoide
Les cochons... dans l'espâââce
Posté le 18-09-2001 à 11:10:18  profilanswer
 

tu peux directement creer un object Date a partir d'une chaine, et tester ensuite si c'est une date valide. Ca t'evite tes 400.000 lignes inutiles. Ca marche avec tous les object JS (si y'a pas un constructeur qui prend une string, y'a String.parseXXX) ... par exemple, le code complet pour tester un entier et une date a partir d'une string (c'est quand meme largement plus simple) :
 
<HTML>
<HEAD>
 
<SCRIPT LANGUAGE="JavaScript">
 
function checkNumber(name)
{
 var i = parseInt(document.all[name].value);
 var result = "Text is a valid number";
 
 if(isNaN(i))
  result = "Text is not a valid number";
 
 alert(result);
}
 
function checkDate(name)
{
 var date = new Date(document.all[name].value);
 var result = "Text is a valid date";
 
 if(isNaN(date))
  result = "Text is not a valid date";
 alert(date);
}
 
</SCRIPT>
</HEAD>
<BODY>
<h2>Validity test for number (int)</h2>
<INPUT NAME="number" TYPE="TEXT" OnChange="checkNumber('number')">
<h2>Validity test for date (MM/DD/YYYY)</h2>
<INPUT NAME="date" TYPE="TEXT" OnChange="checkDate('date')">
</BODY>
</HTML>

 

[edtdd]--Message édité par Gonzoide--[/edtdd]

n°60030
FLY LM
Posté le 18-09-2001 à 11:24:00  profilanswer
 

Oui...c'est sur, même si dans l'objet date sera pas aussi souple qu'une REGEXP... Mais j'avoue que cela ne m'étais pas venu à l'idée... Pourquoi faire compliquer quand on peut faire simple...

n°60036
Gonzoide
Les cochons... dans l'espâââce
Posté le 18-09-2001 à 11:33:58  profilanswer
 

Pas aussi souple ? Le parser integre dans "Date" te permet de prendre directement les Strings de la forme "xx/xx/2001" ou "20 sept 2001", etc etc (tout ce qui ressemble a une date bien formee est accepte)

n°60045
FLY LM
Posté le 18-09-2001 à 11:47:50  profilanswer
 

Gonzoide a écrit a écrit :

Pas aussi souple ? Le parser integre dans "Date" te permet de prendre directement les Strings de la forme "xx/xx/2001" ou "20 sept 2001", etc etc (tout ce qui ressemble a une date bien formee est accepte)  




 
Autant pour moi... Par contre il valide des dates du genre : 99/18/2000 ????? -> pour lui c'est ok

n°60324
k666
dites non à petitmou
Posté le 19-09-2001 à 15:10:00  profilanswer
 

supers les liens merci bokoo à vous :)  
je vais les lire bientôt, car je suis maintenant au  :jap: chômmage :jap:  
 
 :love: fin du monde rulez :love:
 
ah ou, dans la version non innovante, bah la fonction isMail pourrave est ci dessous, ça marche néanmoins un peu :
 

Code :
  1. function isMail(koi)
  2. {
  3. var tmp = koi;
  4. if ( ( tmp != "" )  && ( tmp != null ) )
  5. {
  6. if ( (tmp.indexOf("@" ) == tmp.lastIndexOf("@" )) && (tmp.indexOf("@" ) > 1) )
  7.  {
  8.  if ( (tmp.lastIndexOf("." ) > tmp.lastIndexOf("@" )) && (tmp.lastIndexOf("." ) < (tmp.length - 2)) ) return 1;
  9.  else return 0;
  10.  }
  11. else return 0;
  12. }
  13. else return -1;
  14. }

 

[edtdd]--Message édité par k666--[/edtdd]

n°60333
Gonzoide
Les cochons... dans l'espâââce
Posté le 19-09-2001 à 15:24:41  profilanswer
 

Si mon adresse c'est : a@toto.com, ben ca marche pas :)

n°60368
k666
dites non à petitmou
Posté le 19-09-2001 à 16:01:15  profilanswer
 

bahnon.... :( c vrai  :sweat:  
allez,  :fou: viré!!!! :fou:  
 
 
 :lol:  :lol:  
 
bin en fait je "crois" que la syntax adresses mail prévoit quiaie au moins 3 charactères à gauche de l'arrobase, ou truc du genre ????
ché plus

 

[edtdd]--Message édité par k666--[/edtdd]


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

  [JAVASCRIPT] textareas / validation de forms, AIDE!!!

 

Sujets relatifs
[Javascript - HTML] Layers on top[javascript] fenetre sans bouton agrandir/reduire
le refresh en javascript commentkonfait ?BESOIN D'AIDE EN ALGO
JAVASCRIPT / DHTML : Scripts bidons SVP[JavaScript/DHTML] Changement d'image
detection du bouton droit ou gauche en javascriptcordonnées de la sourie en JAvascript pourkoi code marche pas??
[javascript] Scinder une chaine[JAVASCRIPT] Rafaichir une page
Plus de sujets relatifs à : [JAVASCRIPT] textareas / validation de forms, AIDE!!!


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