| |||||
| 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] |
| Aperçu |
|---|
| 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 :
[edtdd]--Message édité par k666--[/edtdd] |
| FLY LM |
|
| 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 | 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:
[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] |




