textareas / validation de forms, AIDE!!! [JAVASCRIPT] - Programmation
Marsh Posté le 11-09-2001 à 16:25:50
"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
Marsh Posté le 11-09-2001 à 17:22:09
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
Marsh Posté le 12-09-2001 à 08:49:46
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
Marsh Posté le 12-09-2001 à 09:41:59
fais toujours un tour ici pour les dates
http://www.w3schools.com/js/js_datetime.asp
Marsh Posté le 12-09-2001 à 13:06:15
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 :
|
et dans la page des formulaires, fo mettre:
Code :
|
voilà, salut
[edtdd]--Message édité par k666--[/edtdd]
Marsh Posté le 17-09-2001 à 09:00:40
up pour tous les flémards
j'ai rajouté isMail()
je posterai staprème
Marsh Posté le 17-09-2001 à 12:13:53
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....
Marsh Posté le 18-09-2001 à 00:46:46
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
Marsh Posté le 18-09-2001 à 09:56:31
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
Marsh Posté le 18-09-2001 à 09:59:40
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]
Marsh Posté le 18-09-2001 à 11:10:18
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]
Marsh Posté le 18-09-2001 à 11:24:00
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...
Marsh Posté le 18-09-2001 à 11:33:58
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)
Marsh Posté le 18-09-2001 à 11:47:50
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
Marsh Posté le 19-09-2001 à 15:10:00
supers les liens merci bokoo à vous
je vais les lire bientôt, car je suis maintenant au chômmage
fin du monde rulez
ah ou, dans la version non innovante, bah la fonction isMail pourrave est ci dessous, ça marche néanmoins un peu :
Code :
|
[edtdd]--Message édité par k666--[/edtdd]
Marsh Posté le 19-09-2001 à 16:01:15
bahnon.... c vrai
allez, viré!!!!
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]
Marsh Posté le 11-09-2001 à 15:11:59
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]