Script onchange ne marche pas sous IE

Eléphanteau du PHP | 14 Messages

11 déc. 2015, 23:23

Bonjour, alors voilà mon problème.....
je suis actuellement su un formulaire type carte postale avec des div's qui change suivant l'option sélectionné depuis un menu déroulant.... tout fonctionne implacablement sous Chrome mais pas sous IE
je clique sur le menu déroulant et au choix de l'option la div ne change pas et reste la même...


<script type="text/javascript">
function catsel(sel) {
//if (sel.value=="-1" ) return;
var opt=sel.getElementsByTagName("option" );
for (var i=0; i<opt.length; i++) {
var x=document.getElementById(opt.value);
if (x) x.style.display="none";
}
var cat = document.getElementById(sel.value);
if (cat) cat.style.display="block";
}
</script>


Le menu déroulant dans le formulaire :

<select name="frOccasion" onchange="catsel(this)">
<option value="Choisissez l'occasion">Choisissez un événement</option>
<option value="Bon anniversaire">Bon anniversaire</option>
<option value="Bonne journée">Bonne journée</option>
<option value="Une pensée pour toi">Une pensée pour toi</option>
<option value="Neutre">Neutre</option>
</select>

Les div's dans la page:

<div id="Choisissez l'occasion" style="display:block">
texte et image contenu dans la div "Choisissez l'occasion"
</div>
<div id="Bon anniversaire" style="display:none">
texte et image contenu dans la div "Bon anniversaire"
</div>
<div id="Bonne journée" style="display:none">
texte et image contenu dans la div "Bonne journée"
</div>

etc, etc......
La div "Choisissez l'occasion" est afficher quand on arrive sur la page et si par exemple depuis le menu déroulant on sélectionne "Bonne journée", c'est la idv "Bonne journée" qui s'affiche à la place de la div "Choisissez l'occasion"

Encore une fois tout fonctionne sous CHROME mais cela ne fonctionne pas sous IE....

avez vous une idée?

Avatar du membre
Mammouth du PHP | 1564 Messages

11 déc. 2015, 23:33

Tu peux pas utiliser jQuery ? ie est casse bonbon...

Edit, le problème vient d'un getelementby.... je pense, ie n'est pas très copain avec ce genre de chose ^^

Eléphant du PHP | 243 Messages

11 déc. 2015, 23:59

Ah le javascript et Internet Explorer.
two3d, je pense que si juste un style.display ne fonctionne pas en javascript, ça ne fonctionnera pas non plus avec le fabuleux jQuery.

Ensuite, si tout fonctionne sur chrome mais pas sour Internet Explorer, pour moi il n'y a qu'une seule raison, c'est que javascript n'est pas gérer par le navigateur (soit par un problème de version, soit car juste le navigateur est un peu fatigué et a décider de ne pas travailler).
Pour vérifier ma première théorie, essaye de faire juste un alert();
Dans le cas où tu ne reçois aucune alerte avec IE, alors ma théorie sera vérifié.

Oui oui, JavaScript est super, sauf quand le navigateur refuse de s'en occuper.
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Eléphanteau du PHP | 14 Messages

12 déc. 2015, 01:26

Merci pour vos réponses...
En effet Ascia cela proviens bien du fameux IE....
j'ai donc tester (car j'avais des alert() en javascript pour le remplissage des input et sous IE, je te le donne en mille.... il vérifie rien il envoie le formulaire....

Pour info j'ai le nouveau IE fournis avec la mise à jour de windows (ou 8.1) donc je tourne avec windows 10....

j'ai recherché une info et javascript est bien activé chez moi...
Je viens de tester sur un autre PC équipé de IE 11 et même problème....

Je vous donne l'url de la page au cas ou car je sèche complètement
http://cspmr.fr/templates/allcss/carte- ... eform.html

merci à vous

Mammouth du PHP | 2703 Messages

12 déc. 2015, 01:32

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
<html>
<head>
est-ce que cela fonctionnerait mieux avec du code html valide ?

Avatar du membre
Mammouth du PHP | 1564 Messages

12 déc. 2015, 01:44

Bien vu

Eléphanteau du PHP | 14 Messages

12 déc. 2015, 01:54

Comment ça du code html valide?
pour info, je suis parti sur un "script" de base PHPMailer (n'étant pas pro ni asse calé dans le domaine...
et pour ce qui est du doctype c'est celui sur la page de base qui envoi les infos à une page .tpl (qui contiens la mise en page de l'email envoyer, donc je n'y ai pas touché)

et enfin, j'ai bien eu le test que l'un de vous à fait avec une carte anniversaire...

Je demande pas à ce que l'on me modifie la page mais juste à m'orienté si vous avez trouver le problème (satané IE)
merci les filles ;-)

UP
ah ok, je suppose que tu parle de fait qu'il y a un <html> <head> en trop (oui j'avais trouvé ça bizarre aussi)
mais comme le "script" comportais 3 exemples différent de formulaire et que les 3 pages avait se double <html> <head> je m'était dit que c'est normale (mouais) et que le système en avais besoin (pour une raison x ou y )
je vien aussi de testet en enlevant ces doublons et résultat identique, marche pas cette histoire de menu sous IE...

Eléphant du PHP | 243 Messages

12 déc. 2015, 02:52

j'ai donc tester (car j'avais des alert() en javascript pour le remplissage des input et sous IE, je te le donne en mille.... il vérifie rien il envoie le formulaire....
La vérification par javascript est totalement déconseillée. Tu peux quand même la laisser, mais il est important d'en ajouter une autre de secours de type php. En effet, je vais te donner un exemple tout bête. Certains navigateurs n'ont pas javascript (et oui ça existe). Du coup, les utilisateurs pourront passer les contraintes sans aucun soucis.

De plus, je me suis permis de regarder le code javascript de ta page, et je suis tombé sur quelque chose de très bizarre et de très faux !
Dans ton code, tu utilises :
<!-- pour les commentaires
Mais il est TOTALEMENT faux d'utiliser ceci pour des commentaires.

Rappel :
Commentaire HTML
<!-- Commentaire -->

Commentaire Javascript
/* Commentaire */
// Commentaire

Il te suffit donc de corriger ces erreurs et je pense que ton code marchera de nouveau.

Si ça fonctionne sous chrome, je pense que c'est juste que ce navigateur est bien trop puissant et arrive à passer outre ces erreurs.

Voili voilou... :wink:
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Avatar du membre
Mammouth du PHP | 1564 Messages

12 déc. 2015, 03:44

merci les filles ;-)
Il est mignon lui :mrgreen:

PS: c'est moi qui est fait le test du formulaire :wink:

@ ascla: je dirais même plus:
/* commentaire
multi lignes*/
//commentaire sur une ligne
:lol:

Eléphanteau du PHP | 14 Messages

12 déc. 2015, 11:35

Super merci, sa fonctionne.... merci pour ses infos en fait c'était tout bête.....

Juste une question:
Tu me dit (ASCIA) qu'il est mieux de passer par du php pour la vérification des champs du formulaire ok MAIS (et c'est là ou je sèche #-o )
1: ma page formulaire est en .html
je la met simplement en .php et après je peux inclure du php? rien à changer dans le doctype ? (ça c'est la question à 2 balles)

Ensuite, imaginons donc que ma page soit en .php, avec donc du code php ouais sa peut aider :lol:
(exemple, la vérification des champs en code php, un code pour joindre la date et l'heure d'envoi de l'email en php......)
ma page .tpl ne peux pas contenir du php et comme ma page .php contiendrais par exemple
<?php echo 'le '.$date; ?> <?php echo 'à '.$heure; ?>
comment faire pour récupérer ses valeurs et les afficher dans le .tpl? vue que les "valeurs" acceptés sont sous la forme {frParente} pour le champs Parent par exemple

Merci pour votre temps les hommes :priere:

Eléphant du PHP | 243 Messages

12 déc. 2015, 12:07

@ ascla: je dirais même plus:
/* commentaire
multi lignes*/
//commentaire sur une ligne
:lol:
Exact !
Tu me dit (ASCIA)
On va le résoudre un premier problème. Ascla s'écrit avec un L !

Mais une fois ton formulaire envoyé, c'est une page PHP qui gère les données non ?
Dans ce cas là, tu n'as qu'à mettre les conditions de vérification dans ta page qui envoie les données.
Je m'explique : Dés que les données sont envoyées, tu rajoutes des conditions dans ton PHP qui vérifient si les inputs ne sont pas vides, si l'email est correct, etc...

Donc pour conclure, il faut rajouter des conditions dans la page qui va gérer la gestion des données. (Pour éviter que je vienne sur ton site avec un navigateur sans Javascript, et que j'appuie 15 fois sur ton bouton envoyer pour que tu te fasses flooder).
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Eléphanteau du PHP | 14 Messages

12 déc. 2015, 12:44

Je suis pas sur de ce que tu dit Ascla =D> (hormis dans le principe, tu m'excusera mais j'aime bien comprendre :oops: )
En fait, actuellement j'ai mon formulaire qui est sur la page sampleform.html
quand tout est remplis (et c'est là ou je suis pas trop sur de ton explication car pour moi logiquement le code de vérification devrais se trouver sur la même page que le formulaire, à moins que je me trompe...)
donc on demande l'envoi via le bouton envoyer et donc le contenu est envoyer vers la page phpmailer-fe.php qui vas donc valider le contenu et l'envoyer par e-mail (.tpl => email html)

dans ma logique cela se passe comme ça (ou?)

donc ma question:
je suppose que les deux versions devrais être possible, mais pour une personne qui n'est pas pro en php mais qui arrive à plus ou moins se dépatouillé tu me conseillerais quoi?

merci pour ton temps (monsieur :non: madame enfin ASCLA :wink:

Eléphant du PHP | 243 Messages

12 déc. 2015, 13:44

C'est bien ça. Ta page html ne gère que l'apparence de ton formulaire, quant à ta page php, c'est elle qui va envoyer le mail.
Ce que j'essayais de dire plus haut, c'est que le Javascript ne suffisait pas, À LUI TOUT SEUL, à conditionner tes données du fait qu'il puisse être désactivé. Donc une personne avec un navigateur sans javascript pourrait lui passer outre tes protections.
Il est donc nécéssaire, et même obligatoire que dans ta page php ( celle qui accueille les données ), si ce n'est pas déjà fait, d'ajouter des conditions avant l'envoie de l'email (champ vide, existence de l'email, ...).
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Eléphanteau du PHP | 14 Messages

12 déc. 2015, 14:49

ok sa marche, je te remercie beaucoup pour tes conseils Ascla et je vais faire comme tu dit..
je laisse ouvert pour le moment au cas ou ;-), je mettrais résolu quand tout sera ok ;-)

Eléphant du PHP | 243 Messages

12 déc. 2015, 15:49

Okay ça marche !
Si tu as d'autres questions, n'hésite pas.
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini