Fonction indéfinie sur Firefox

Résolu/Fermé
Jeyapero Messages postés 32 Date d'inscription samedi 4 septembre 2010 Statut Membre Dernière intervention 24 avril 2014 - 5 août 2013 à 14:23
Jeyapero Messages postés 32 Date d'inscription samedi 4 septembre 2010 Statut Membre Dernière intervention 24 avril 2014 - 6 août 2013 à 00:00
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>
A voir également:

2 réponses

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
5 août 2013 à 16:07
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
Jeyapero Messages postés 32 Date d'inscription samedi 4 septembre 2010 Statut Membre Dernière intervention 24 avril 2014 10
6 août 2013 à 00:00
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 !
0