Script fonctionnant sous Firefox mais pas sous IE6

Résolu
cs_Kaiser Sauzer Messages postés 13 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 22 juillet 2010 - 15 juil. 2010 à 11:31
cs_Kaiser Sauzer Messages postés 13 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 22 juillet 2010 - 16 juil. 2010 à 15:11
Bonjour,
j'ai une page de formulaire qui fait appelle à 2 script.
- le premier me fait apparaître un champs supplémentaire selon le résultat d'un select.
- l'autre me permet de vérifier que tous les champs obligatoires sont remplis avant de passer à la page suivante.

Les 2 fonctionnent très bien sous firefox mais sous IE6 ça ne fonctionne plus.
Voici des bouts de code.

Mon body où je charge ma première fonction
"


la fonction en question
function affiche2(){
var res=  document.getElementById('insectets').value; 

   if(res != 'Autre')
{
document.getElementById('precets').style.display='none';
document.getElementById('inprecets').style.display='none';
} 
else
{
document.getElementById('inprecets').style.display='block';
document.getElementById('precets').style.display='block';
}
}


et les champs concernés dans mon formulaire
<tr>
            <td width="140" align="left"> Secteur d'activité* :  </td>
            <td align ="left"> <select name= "secteuract_ets" id="insectets" onchange="affiche2(this.form)">
            <option value="" selected="selected"></option>
<?php 
$result2 = mysql_query("SELECT * FROM secteur ORDER BY nom_secteur");
while($tableau2 = mysql_fetch_array($result2))
{
if($tableau2['nom_secteur'] != "Autre")
{echo "<option value='".$tableau2['id_secteur']."'>".$tableau2['nom_secteur']."</option>";}
}
        ?> 
<option value="Autre">Autre...</option>
</select>
            </td>
            <td id="precets" align="left" hidden> Précisez* :  </td>
            <td align ="left" id="inprecets" hidden></td>
        </tr>


Pour la verif voici mon script en vous passant les détails qui sont rébarbatifs
function verifform(formulaire){
// Initialisation de la variable qui sera affichée en cas d'erreur
var y = "Veuillez compléter les champs suivants :\n ";

//Test que la civilité est bien choisie
if ( !document.formulaire.civilite[0].checked ) {
if ( !document.formulaire.civilite[1].checked ) {
if ( !document.formulaire.civilite[2].checked ) {
y += "- Votre civilité\n ";
}}}

//Test des champs obligatoires
var email = document.formulaire.email.value; //email de l'annonceur
var email_ets = document.formulaire.email_ets.value; //email de l'entreprise

if( formulaire.prenom.value == "")
{y += "- Votre prénom\n ";}

...

if (y != "Veuillez compléter les champs suivants :\n ")
alert(y)
else formulaire.submit();
  }


et le bouton où j'appelle la fonction



Voilà si vous pouviez m'aider ça serait sympa.
PS : comment faire lorsque le javascript n'est pas activé sur les PC?

19 réponses

chino18 Messages postés 82 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 1 avril 2011 1
16 juil. 2010 à 12:19
J'ai trouvé!

Dans ton head, le type mime du script est mauvais.

Il faut écrire
<script language="JavaScript" type="text/javascript">

et non pas
<script language="JavaScript" type="application/javascript">

Chez moi, cela provoquait une erreur.


-- message approuvé par Jean-Claude Van Damme --
3
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
16 juil. 2010 à 02:05
Bonjour,

1- Et quelle erreur IE donne-t-il lorsque tu actives le déboguage ?

2- Ce code ci :
	if ( !document.formulaire.civilite[0].checked ) {
if ( !document.formulaire.civilite[1].checked ) {
if ( !document.formulaire.civilite[2].checked ) {
y += "- Votre civilité\n ";
}}}


se simplifie par
if ( !document.formulaire.civilite[0].checked && !document.formulaire.civilite[1].checked && !document.formulaire.civilite[2].checked) {
y += "- Votre civilité\n ";
}





JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !
fr.jsinfo.wikia.com
0
chino18 Messages postés 82 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 1 avril 2011 1
16 juil. 2010 à 08:36
Salut.

Je vois déjà une petite erreur de syntaxe:

Ecris:

alert(y);

au lieu de:
alert(y)




-- message approuvé par Jean-Claude Van Damme --
0
cs_Kaiser Sauzer Messages postés 13 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 22 juillet 2010
16 juil. 2010 à 08:47
oui effectivement j'ai pas fait attention à ça.
Bien entendu ça ne fonctionne toujours pas sous IE pour autant mais merci pour ta correction ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chino18 Messages postés 82 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 1 avril 2011 1
16 juil. 2010 à 09:31
Essayes ceci:

Remplaces:


par



Sinon je ne vois pas pourquoi tu passes this.form ici:


et ici:
<select name="secteuract_ets" id="insectets" onchange="affiche2(this.form)">


Alors que ta fonction affiche2() n'as pas besoin de paramètres??


-- message approuvé par Jean-Claude Van Damme --
0
cs_Kaiser Sauzer Messages postés 13 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 22 juillet 2010
16 juil. 2010 à 10:08
Bon j'ai essayé, aucun changement!

Je sais pas pourquoi je les passes en paramètres, l'habitude...
0
chino18 Messages postés 82 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 1 avril 2011 1
16 juil. 2010 à 10:20
Bon ça ne marche pas...

As-tu corrigé les appels à affiche2() ?


et
<select name="secteuract_ets" id="insectets" onchange="affiche2()">



-- message approuvé par Jean-Claude Van Damme --
0
cs_Kaiser Sauzer Messages postés 13 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 22 juillet 2010
16 juil. 2010 à 10:25
oui oui, j'ai bien viré de partout les paramètres.
Tous mes appels sont vides de paramètres.
0
chino18 Messages postés 82 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 1 avril 2011 1
16 juil. 2010 à 10:49
Concernant les cases "precets" et "inprecets", je n'ai encore jamais vu d'attribut HIDDEN
Remplaces HIDDEN par

style="display: none;"



Autre chose:

dans la fonction affiche2(), fait un
alert(res);

juste après
var res= document.getElementById('insectets').value;


pour vérifier la valeur de res.

-- message approuvé par Jean-Claude Van Damme --
0
cs_Kaiser Sauzer Messages postés 13 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 22 juillet 2010
16 juil. 2010 à 10:59
hidden fonctionnait (d'après mes souvenirs) à l'époque où je faisais des sites il y a de ça quelques années... lol
Et ne m'étant jamais penché sur le CSS (aïe pas sur la tête), je suis pas trop à jour...

Sinon cela ne fonctionne toujours pas sous IE6, bien entendu le alert ne s'exécute pas... Sur firefox on a bien la valeur de la sélection.
0
chino18 Messages postés 82 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 1 avril 2011 1
16 juil. 2010 à 11:18
MMmmm. Je commence à me demander si ton appel à affiche2() ici:


ne s'exécute alors que le document n'a pas fini de se charger.

Ce qui expliquerait pourquoi
document.getElementById('insectets').value;

ne te retourne rien.

On va faire un test:
Essayes de virer onload='affiche2()' dans le body.
A la place, appelles ta fonction juste avant la balise de fin du body:
...
   <script type="text/javascript">
        affiche2();
   </script>
  
</html>


-- message approuvé par Jean-Claude Van Damme --
0
cs_Kaiser Sauzer Messages postés 13 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 22 juillet 2010
16 juil. 2010 à 11:25
Pour ton information je viens de tester ça pour voir.

Et là..... ça fonctionne toujours pas lol.
Je vais faire un test en ligne mais je comprends pas là
<script language="JavaScript" type="application/javascript" >
function affiche2(){
alert ("test");

}
</script>


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test affiche</title>
</head>


Secteur d'activité* : ,
<select name="secteuract_ets" id="insectets" onchange="affiche2();">
<option value="" selected="selected"></option>
<option value="test">tes1</option>
<option value="test2">tes2</option>
<option value="test2">tes2</option>
<option value="Autre">Autre...</option>
</select>,
Précisez* : ,



</html>
0
cs_Kaiser Sauzer Messages postés 13 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 22 juillet 2010
16 juil. 2010 à 11:37
J'ai essayé et toujours rien!

j'ai essayé de le chargé dans le onload uniquement :
ça fonctionne pas

dans le onchange uniquement :
ça fonctionne pas

toujours la même erreur de IE "object expected"
0
chino18 Messages postés 82 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 1 avril 2011 1
16 juil. 2010 à 11:48
Alors, là je ne vois pas.

Vides le cache de IE et vérifie que Javascript est activé.
Ajoutes ton site aux sites de confiance, tu devrais être tranquille.

Regardes si ca change quelque chose.

Après, je crois qu'il ne reste plus qu'une seule solution: planter un crucifix dans un port USB ou sacrifier un poulet

Non sans rire, montres le code complet de ta page, et le code js qui va avec.
Tu me l'envoyer en MP si ça te chantes.

Ya forcément un truc qui merde.

-- message approuvé par Jean-Claude Van Damme --
0
cs_Kaiser Sauzer Messages postés 13 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 22 juillet 2010
16 juil. 2010 à 12:00
le javascript est activé puisque sur la page original j'ai un <noscript> pour rediriger dans ce cas là.

J'ai déjà vidé le cache de IE.
Ma page est simplifié au maximum, ce que j'ai poster tout à l'heure et le contenu entier de la page pour tester.

Est ce que le fait que ce soit en local puisse être la raison??
J'attend qu'on me donne les accès au FTP pour tester en ligne mais je crois que l'option du crucifix sera la prochaine lol.

Je t'envoie par MP le contenu de ma page simplifié et si ça passe je te l'enverrai en entier pour voir ;)

merci en tout cas de ton aide
0
cs_Kaiser Sauzer Messages postés 13 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 22 juillet 2010
16 juil. 2010 à 12:43
effectivement avec text ça marche mieux!!

Cool bon ma page à encore des problème mais au moins ça fonctionne mieux.
Je vais manger, faire des tests et si ça fonctionne toujours pas je repasse par ici ;)

merci
0
cs_Kaiser Sauzer Messages postés 13 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 22 juillet 2010
16 juil. 2010 à 13:48
bon et bien ça y est ça fonctionne avec les 2 IE et firefox, j'avais enlever le paramètre dans le onclick, en le remettant c'est mieux



J'ai plus qu'une question de mise en page qi poe problème avec ma fonction affiche2()
sous IE c'est bien aligné par contre sous firefox ça se mets sur 2 lignes...
je comprends pas pourquoi
0
chino18 Messages postés 82 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 1 avril 2011 1
16 juil. 2010 à 14:36
Bon ben là c'est plus qu'un problème de css.

Je te conseille de passer par des divs et non par un tableau.
Tu auras moins de problèmes de style je pense.

N'oublies pas de cliquer sur "réponse acceptée".

ciao.

-- message approuvé par Jean-Claude Van Damme --
0
cs_Kaiser Sauzer Messages postés 13 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 22 juillet 2010
16 juil. 2010 à 15:11
c'est bon j'utilisais cette même partie du formulaire sur une autre page où ça fonctionnait direct donc un petit copier-coller et le tour est joué.

Pour les div je maîtrise pas et comme le dev est loin de mon métier actuel je vais pas trop me prendre la tête avec ça ;)

Merci beaucoup à toi, tu as assuré du slip comme on dit
0
Rejoignez-nous