lteixeir
Messages postés7Date d'inscriptiondimanche 24 juin 2007StatutMembreDernière intervention21 juillet 2008
-
21 juil. 2008 à 14:56
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 2013
-
22 juil. 2008 à 12:04
Bonjour à tous !
Je travaille actuellement sur des champs textes qui doivent vérifier certaines conditions : s'écrire JJ/MM/AAAA ou JJ/MM/AAAA HH:MM ou JJ/MM/AAAA HH:MM:SS.
J'utilise donc une expression régulière associée à du JavaScript pour tester cela sur un évènement onBlur.
Voici l'expression régulière :
var
reg =
/^(([0-2]\d|[3][0-1])[/]([0]\d|[1][0-2])[/]([1][9]|[2][0])\d{2})$|^(([0-2]\d|[3][0-1])[/]([0]\d|[1][0-2])[/]([1][9]|[2][0])\d{2}\s([0-1]\d|[2][0-3])[:][0-5]\d)$|^(([0-2]\d|[3][0-1])[/]([0]\d|[1][0-2])[/]([1][9]|[2][0])\d{2}\s([0-1]\d|[2][0-3])[:][0-5]\d[:][0-5]\d)$/gi;
La partie principale est celle-ci : ^(([0-2]\d|[3][0-1])[/]([0]\d|[1][0-2])[/]([1][9]|[2][0])\d{2})$ (JJ/MM/AAAA).
Sur IE tout fonctionne parfaitement, sur Firefox, c'est beaucoup plus aléatoire.
Lorsque je remplis mon champ texte par "21/10/1998" par exemple et que
je quitte mon champ texte, aucune erreur, mais si je refais cette
manipulation une 2ème fois, l'alerte que j'ai mis en cas d'erreur
s'affiche. :S Aucune erreur ne s'affiche dans la console d'erreur.
D'où cela peut-il venir ? Et surtout, comment régler le problème ?
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 21 juil. 2008 à 15:17
Bonjour,
aucune raison.
même si les différences existent ( doux euphémisme ), pas sur ce que tu donnes
on n'a pas tout ce qu'il faut d'ailleurs pour dire,
mais je suppute un return false qui manquerait ?
tu peux mettre un EXTRAIT du html ( formulaire ... ) ?
enfin... fais nous un exemple qui ne fonctionne pas ! ( 5 lignes !
tout ce qu'il faut mais pas plus )
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 21 juil. 2008 à 15:37
certes..
mais c'est quoi ces " ? asp ou php ?
et le html ? et comment on appelle cette fonction ?
et si c'est ok : pas de return false, donc peut-être le formulaire,
s'il existe, est-il soumis....
un extrait de la page html résultante, qui ne fonctionne pas, c'est possible ?
<hr /> Cordialement Bul [mon Site] [M'écrire]
Pourquoi un e.Item.FindControl(), parce que j'utilise un repeater.
Je n'ai pas codé entièrement cette page, je suis juste venue y ajouter les choses nécessaires.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 21 juil. 2008 à 16:33
en simplifiant :
<script type="text/javascript">
function verifDateEntier(prefix,texte,alerte)
{
var reg2 = /^(([0-2]\d|[3][0-1])[/]([0]\d|[1][0-2])[/]([1][9]|[2][0])\d{2})$|^(([0-2]\d|[3][0-1])[/]([0]\d|[1][0-2])[/]([1][9]|[2][0])\d{2}\s([0-1]\d|[2][0-3])[:][0-5]\d)$|^(([0-2]\d|[3][0-1])[/]([0]\d|[1][0-2])[/]([1][9]|[2][0])\d{2}\s([0-1]\d|[2][0-3])[:][0-5]\d[:][0-5]\d)$/gi;
if ( document.getElementById(prefix + texte).value != '' )
{
if ( !reg2.test(document.getElementById(prefix + texte).value) )
{
window.alert(alerte);
//document.getElementById(prefix + texte).value = ''; pour les tests
return false;
}
alert("ok"); // pour les tests
return true;
}
}
</script>
et ça baigne et pour FF, et pour IE....
il n'y a pas de formulaire dans lequel est inclus le champs ?
sinon, "l'erreur est ailleurs"
mais pas sûr que des " ne manque pas ou ne sont pas en trop...
( j'ai fait manuellement ! puisque tu ne nous donnes pas la fonction résultante ! )
lteixeir
Messages postés7Date d'inscriptiondimanche 24 juin 2007StatutMembreDernière intervention21 juillet 2008 21 juil. 2008 à 17:05
La fonction résultante est :
function verifDateEntier(prefix,texte,alerte){
var reg = new RegExp('^([0]?[1-9]|[1|2][0-9]|[3][0|1])[/]([0]?[1-9]|[1][0-2])[/]([0-9]{4}|[0-9]{2})$','gi'); // Que pour la date
var reg2 = /^(([0-2]\d|[3][0-1])[/]([0]\d|[1][0-2])[/]([1][9]|[2][0])\d{2})$|^(([0-2]\d|[3][0-1])[/]([0]\d|[1][0-2])[/]([1][9]|[2][0])\d{2}\s([0-1]\d|[2][0-3])[:][0-5]\d)$|^(([0-2]\d|[3][0-1])[/]([0]\d|[1][0-2])[/]([1][9]|[2][0])\d{2}\s([0-1]\d|[2][0-3])[:][0-5]\d[:][0-5]\d)$/gi; // Date et Heure
if ( document.getElementById(prefix + texte).value != '' ){
if ( !reg2.test(document.getElementById(prefix + texte).value) ){
window.alert(alerte);
document.getElementById(prefix + texte).value = '';
return false;
}
}
}
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 22 juil. 2008 à 12:04
ben avec la fonction que tu nous donnes, comme
celle que j'avais mise.... ben ça baigne IE, FF :
on n'a pas ce qu'il faut pour trouver l'erreur
( essaye ci dessous, tu verras )
<script type="text/javascript">
function verifDateEntier(prefix,texte,alerte){
var reg = new RegExp('^([0]?[1-9]|[1|2][0-9]|[3][0|1])[/]([0]?[1-9]|[1][0-2])[/]([0-9]{4}|[0-9]{2})$','gi'); // Que pour la date
var reg2 = /^(([0-2]\d|[3][0-1])[/]([0]\d|[1][0-2])[/]([1][9]|[2][0])\d{2})$|^(([0-2]\d|[3][0-1])[/]([0]\d|[1][0-2])[/]([1][9]|[2][0])\d{2}\s([0-1]\d|[2][0-3])[:][0-5]\d)$|^(([0-2]\d|[3][0-1])[/]([0]\d|[1][0-2])[/]([1][9]|[2][0])\d{2}\s([0-1]\d|[2][0-3])[:][0-5]\d[:][0-5]\d)$/gi; // Date et Heure
if ( document.getElementById(prefix + texte).value != '' ){
if ( !reg2.test(document.getElementById(prefix + texte).value) ){
window.alert(alerte);
//document.getElementById(prefix + texte).value = '';
return false;
}
else { alert("ok");
return true; }
}
}</script>
en rouge pour voir ce qui se passe...
<hr /> Cordialement Bul [mon Site] [M'écrire]