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

 


Dernière réponse
Sujet : [JAVASCRIPT] textareas / validation de forms, AIDE!!!
k666 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]


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
k666 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]

Gonzoide Si mon adresse c'est : a@toto.com, ben ca marche pas :)
k666 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]

FLY LM

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

Gonzoide 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)
FLY LM 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...
Gonzoide 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]

FLY LM 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]

FLY LM 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
k666

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 :)

FLY LM 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....
k666 up pour tous les flémards ;)
j'ai rajouté isMail()
je posterai staprème ;)
k666 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]

art_dupond fais toujours un tour ici pour les dates
 
http://www.w3schools.com/js/js_datetime.asp
_epegasus_ 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 :(
k666 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 :)
_epegasus_ "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 :)
k666 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]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)