Fonction indéfinie sur Firefox [Résolu/Fermé]

Signaler
Messages postés
32
Date d'inscription
samedi 4 septembre 2010
Statut
Membre
Dernière intervention
24 avril 2014
-
Messages postés
32
Date d'inscription
samedi 4 septembre 2010
Statut
Membre
Dernière intervention
24 avril 2014
-
Salut tout le monde, alors voilà ça fait plusieurs jours que je m'arrache les cheveux sur ce bug : lorsque j'appelle la fonction suivante, elle s'exécute sur Chrome, IE, mais pas sur Firefox ! Help !

(no comment sur la syntaxe hein, je suis un débutant ^^)

<script type="text/javascript">

var ok1=0, ok2=0, ok3=0, ok4=0, ok5=0;
checkform = function(type) {
var champ = document.getElementById(type), value = document.getElementById(type).value, ok=0, tailleCh = document.getElementById(type).value.length;
champ.class = "";
if (type=='pseudo'){

if (/^[A-Za-z0-9._-]{4,13}$/.test(value))
{
ok=1;
ok1=1;
}
else
{
ok1=0;
ok=0;
}
}

if (type=='title'){
if (/^[A-Za-z0-9._-\s]{4,20}$/.test(value))
{
ok=1;
ok2=1;
}
else
{
ok2=0;
ok=0;
}

}


if (type=='email'){

if (/^[a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$/.test(value))
{
ok=1;
ok3=1;
}
else
{
ok3=0;
ok=0;
}
}

if (type=='captcha'){

if (/^[a-z0-9A-Z]{4}$/.test(value))
{
ok=1;
ok4=1;
}
else
{
ok4=0;
ok=0;
}
}

if(tailleCh==0)
{
document.getElementById('moneySubmitButton').style.display = 'rgba(142,145,129,0.3)';
}
if(ok==1)
{
document.getElementById(type).style.backgroundColor = 'rgba(0,255,0,0.5)';
}
else
{
document.getElementById(type).style.backgroundColor = 'rgba(255,0,0,0.5)';
}
if(ok1*ok2*ok3*ok4==1)
{

document.getElementById('moneySubmitButton').style.display = 'block';
}
else
{
document.getElementById('moneySubmitButton').style.display = 'none';
}
return;
}

</script>

2 réponses

Messages postés
4761
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
23 octobre 2020
1 138
Salut, j'ai testé, en effet le code de marche pas sur FF.
C'est un problème dans la deuxième RegExp, place le \s avant le A-Z (j'suis nul en RegExp mais ça a marché).

2eme chose: pour indiquer un état vrai ou faux, ici si tout est bon (ok, ok1, ok2...), on n'utilise pas des nombres 0 et 1 mais les booléens true et false. Avec eux on peut utliser des opérateurs logiques ET: &&, OU: ||, NON: !, etc... remplace donc tous les 0 par des false et les 1 par des true. Et du coup:
if(ok==1)
// ainsi que
if(ok1*ok2*ok3*ok4==1) 
deviendront
if(ok)
// ainsi que
if(ok1 && ok2 && ok3 && ok4)
Plus de ==1, car les comparaison (ici d'égalités) renvoient eux-même true ou false.

Dernière chose: pour poster du code, la balise <code >< /code> est plus que pratique pour la lisibilité (petit bouton "Code" dans l'éditeur de post).
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 internautes nous ont dit merci ce mois-ci

Messages postés
32
Date d'inscription
samedi 4 septembre 2010
Statut
Membre
Dernière intervention
24 avril 2014
8
Merci beaucoup gravgun ! Tu es mon sauveur !
Si je pouvais je t'embrasserais ! (mais je vais simplement me contenter de marquer comme "Résolu", si tu n'y vois pas d'inconvénient)

Bonne soirée !