cs_des3er
Messages postés1Date d'inscriptionmardi 12 juin 2007StatutMembreDernière intervention13 décembre 2008
-
13 déc. 2008 à 00:11
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 2011
-
15 déc. 2008 à 18:14
Bonjour,
J'ai un petit soucis je suis entrain de validé un formulaire simple
en test pour ensuite l'implémenter dans mon site web, je programme en
javascript (débutant) et je suis confronté au problème suivant
je test le nom, un montant, et un mail si ils ont vide j'ai un
popup pas de problème, par contre si je teste l'expression régulière en
plus, si exemple je met un nom je teste la validité (alphabétique) ça
me revoit true si c bon et false si c pas bon, même chose pour montant,
et le mail, tout fonctionne à merveille sauf quand je clique sur
valider des fois si j'ai du caractèrs dans le champ nom ça me ré
affiche le popup veuillez entrer des caractères alors que j'ai bien des
cartères dans mon champ on dirai que firefox reprends les ancien
message
voici mon code java
function verification(formulaire)
{
if(document.getElementById('nom').value == "")
{
alert ("Vous avez oublié de saisir le champ nom!!!!");
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201515 13 déc. 2008 à 13:49
bonjour,
pas du tout contrôlé ce que tu fais.
( il existe des function qu'on appelle pas.. mais bon... )
>>sauf quand je clique sur valider des fois si j'ai du caractères dans le champ nom
euh... mais encore ?
c'est sûr qu'une erreur qui semble se produire de manière aléatoire,
c'est pas simple à cerner...
mais ici, en théorie.. soit ça marche, soit ça ne marche pas
sauf.... comme action="page.html", ça dépend de ce qu'on y fait,
une fois le formulaire soumis
Cordialement [mon Site] [M'écrire] Bul
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201116 15 déc. 2008 à 18:14
Bonjour à tous,
Tout à fait TROUBLANT...
Si l'on
teste la chaine "AQDERTL" avec ta fonction...
FireFox retourne
alternativement true et false alors que IExplorer retourne invariablement true.
Encore plus TROUBLANT
Si l'on teste
var szTmp = "AQDERTL";
var
rExp = /^[a-zA-Z-éèêëù]*$/gi;
for( var i=0; i<10; i++){
var Result
= rExp.test( szTmp);
document.write( Result + ' - ');
}
on obtient le même résulat avec ces deux navigateurs
true - false - true - false - true -
false - true - false - true - false
Encore plus plus TROUBLANT ou
TROUBLANT++
Si l'on teste
var szTmp = "AQDERTL";
for( var i=0; i<10; i++){
var rExp =
/^[a-zA-Z-éèêëù]*$/gi;
var Result = rExp.test( szTmp);
document.write( Result + ' - ');
}
l'expression régulière
et cette fois ci réinitialisée à chaque appel...
on obtient avec IExplorer et Safari d'ailleur...
true - true - true - true - true - true - true - true -
true - true
et avec FireFox et
Opéra d'ailleur...
true - false - true - false - true -
false - true - false - true - false
?????
Si maintenant on
utilise la forme construite de l'expression régulière à savoir
var rExp = new
RegExp("^[a-zA-Z-éèêëù]*$", "gi")
en extérieur de la boucle, soit
var szTmp = "AQDERTL";
var
rExp = new RegExp("^[a-zA-Z-éèêëù]*$", "gi")
for( var i=0; i<10; i++){
var Result = rExp.test( szTmp);
document.write( Result + ' - ');
et avec la forme
construite dans la boucle, soit
var szTmp = "AQDERTL";
for( var i=0; i<10; i++){
var rExp =
new RegExp("^[a-zA-Z-éèêëùç]*$", "gi")
var Result = rExp.test( szTmp);
La notation littérale permet la compilation de
l'expression rationnelle à l'évaluation de l'expression. Utilisez cette
notation lorsque l'expression régulière restera constante. Par exemple,
si vous l'utilisez pour construire une expression rationnelle utilisée dans
une boucle, elle ne sera pas recompilée à chaque itération.
Le
constructeur de l'objet RegExp, par exemple new RegExp("ab+c"), permet de
compiler l'expression rationnelle à l'exécution. Utilisez la fonction
constructeur lorsque vous savez que le masque de l'expression rationnelle
changera, ou que vous ne le connaissez pas à l'avance et qu'il provient d'une
autre source, comme une entrée de l'utilisateur.
...je dois
admettre que mes piètres connaissances en matière d'expression régulière ont pris
une gifle...
Je finirais par deux remarques
- pourquoi faire une
recherche en ignorant la casse i, alors que tu mets a-zA-Z ?
- pourquoi si
tu prends en compte éèêëù ne prends tu pas en compte àâôö etc....
Voila en
espérant t'avoir aidé un peu à mieux comprendre ce magnifique langage.
PS: ce n'est pas qu'un BUG FireFox.
La vérité est ailleurs ! But where...
;O)