[JavaScript] Probleme JS avec IE...

Résolu/Fermé
kaias Messages postés 8 Date d'inscription vendredi 23 juin 2006 Statut Membre Dernière intervention 2 juin 2009 - 28 mai 2009 à 17:37
kaias Messages postés 8 Date d'inscription vendredi 23 juin 2006 Statut Membre Dernière intervention 2 juin 2009 - 2 juin 2009 à 16:30
Bonjour,
Je suis entrain de développer une formulaire pour mon site, HTML, PHP et JS...
Voici le formulaire :
echo "<form action='recherche.php' name='Recherche' target='_parent' method='post'>\n";
echo "<a href='#' onclick=\"javascript:fsubmit('$Marque', '$Modele', '$Cylindree');\" ></a><br />\n";
echo "<input type='hidden' name='Marque' value=''></input>\n"; 
echo "<input type='hidden' name='Modele' value=''></input>\n"; 
echo "<input type='hidden' name='Cylindree' value=''></input>\n";
echo "</form>";

Un formulaire simple, avec un lien qui lance une fonction javascript en passant trois variables ('$Marque', '$Modele', '$Cylindree')...
Je vous épargne la boucle qui créer plusieurs lien a href a l'intérieur de mon FORM, pour changer les valeur de marque, model, cylindré...
Jusqu'à la tout vas bien...
Quand je clic sur le lien, il appelle donc fsubmit :

function fsubmit(VMarque, VModele, VCylindree) {
	document.forms.Recherche.Marque.value = VMarque; 
	document.forms.Recherche.Modele.value = VModele; 
	document.forms.Recherche.Cylindree.value = VCylindree; 
	document.forms.Recherche.submit(); 
} 

Quand je clic sur un des liens, ca marche niquel sur Mozilla, je tombe sur ma page de recherche.php, avec mes trois variables passé en POST...
Quand je clic avec IE, rien ne se passe et l'analyseur d'erreur me sort :

Message : 'document.forms.Recherche.Marque' a la valeur Null ou n'est pas un objet.
Ligne : 89
Caractère : 2
Code : 0
URI : http://127.0.0.1/Accueilv4.php

Une idée ?
J'ai testé les variable VMarque, VModele et VCylindree grâce à un alert elles contiennent bien mes valeurs envoyés...
merci

3 réponses

bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
28 mai 2009 à 17:58
Tu aurais pu trouvé n'importe où sur internet ... c'est marqué partout qu'il est déconseillé d'utiliser cette syntaxe (document.forms.Recherche.Marque.value) pour accéder aux objets.

Remplace les attributs name par des id (parce que dans ton cas ce sont des id que tu utilises en name).
Puis utilise la syntaxe :
document.getElementById("Marque").value

Si t'es borné à garder des name document.getElementsByName("Marque")[0].value
Précision: le [0] parce qu'un attribut name peut être utilisé plusieurs fois dans une page, donc le [0] pour avoir le premier objet qui a le name voulu.
(C'est pour ça que je disais que dans ton cas tu utilises names comme des id.. parce que tu ne les utilises qu'une seule fois).
Les seuls objets (jcrois) qui ont nécessairement besoin d'un attribut name, ce sont les input type checkbox et les input type radio (pour les regrouper).

(Si tu t'y connais un peu en langage objet : sous IE les objets fils d'un objet sont privés et non public, c'est pour cela que tu ne peux pas y accéder avec un : objet.objetfils, mais en utilisant une méthode de objet pour récupérer objetfils)
3
salut
merci pour ta réponse précise, en effet je connais un peu le javascript, mais je n'étais pas au courant a propos des objets déclarés privés sous IE....
j'ai construis mon formulaire en m'aidant du net (source : http://www.commentcamarche.net/forum/affich 462414 onclick et submit de form) que j'ai un peu adapté....
je vais refaire ca avec des ID merci ^^
0
kaias Messages postés 8 Date d'inscription vendredi 23 juin 2006 Statut Membre Dernière intervention 2 juin 2009
2 juin 2009 à 16:30
Désole pour le double post...
Je me suis re-penché sur la question, et voila les codes corrects :
function fsubmit(VMarque, VModele, VCylindree) {
	document.getElementById('Marque').value = VMarque; 
	document.getElementById('Modele').value = VModele; 
	document.getElementById('Cylindree').value = VCylindree;
	document.getElementById('Recherche').submit(); 
} 


et

<form action='recherche.php' id='Recherche' method='post'>
        <input type='hidden' id='Marque' name='Marque' value='' />
	<input type='hidden' id='Modele' name='Modele' value='' />
	<input type='hidden' id='Cylindree' name='Cylindree' value='' />
</form>


Je laisse l'attribut Name, je sais pas si c'est tres valide, mais j'en ai besoin pour récupérer les valeurs $_POST sur ma page suivante ^^
Topic clos pour ma part :)

                
0