[javascript, php] Marche sous Firefox pas IE

Fermé
Alexandra - 9 août 2007 à 18:43
 Alexandra - 9 août 2007 à 22:56
Bonjour,
j'ai voulu créer un moyen de choisir entre 2 options (bouton radio) et selon l'option choisi, le menu déroulant affiche des données différentes. Ce code marche très bien sous firefox mais sur IE, quand on clique sur un bouton radio, la liste déroulante est vide.
Je galère vraiment. Je serais très reconnaissant à l'ame charitable qui voudra bien m'aider.
Merci beaucoup.

Voici le code:

<html>

<script type="text/javascript">

function changeForm(id,val) {
document.getElementById(id).innerHTML = opt[val];
}


function Envoi()
{
var d = document;
var erreurs="";

// Couleur de texte des champs si erreur saisie utilisateur
color_font_warn="#000";
// Couleur de fond des champs si erreur saisie utilisateur
color_form_warn="#CCC";

champ = d.formtaux.nbre_revenu;
if(champ.value == ""){
erreurs+="<li><span class='txterror'>Le champ « Nombre de revenus » n'a pas été défini.</span>";
champ.style.backgroundColor = color_form_warn;
champ.style.color = color_font_warn;
}
champ = d.formtaux.revenu;
if(champ.value == ""){
erreurs+="<li><span class='txterror'>Le champ « Vos revenus » n'a pas été défini.</span>";
champ.style.backgroundColor = color_form_warn;
champ.style.color = color_font_warn;
}

if(erreurs == "") {
return true;
}
else {
d.getElementById("erreurs").style.display = "block";
d.getElementById("liste-erreurs").innerHTML = erreurs;
return false;
}
}

</script>

<body>

<form action="" method="post" id="formtaux" name="formtaux" onsubmit="return Envoi();">

<div>
<input id="nbre_revenu1" name="nbre_revenu" type="radio" value="1revenu" onClick="changeForm('revenu1','opt1')" /> 1 revenu
<input id="nbre_revenu2" name="nbre_revenu" type="radio" value="2revenus" onClick="changeForm('revenu1','opt2')" /> 2 revenus
</div>

<?php

include ("admin/connexion.php");
$res=mysql_query("SELECT DISTINCT revenu1 FROM calcul_taux");
$nb=mysql_num_rows($res);

echo '<script type="text/javascript">';
echo 'opt = new Array();';
echo 'opt["opt1"] = \'<option selected value=""></option>\';';

while ($raw=mysql_fetch_array($res))
{
echo 'opt["opt1"] = opt["opt1"]+\'<option value="'.$raw['revenu1'].'">'.$raw['revenu1'].' €</option>\';';
}


$res=mysql_query("SELECT DISTINCT revenu2 FROM calcul_taux");
$nb=mysql_num_rows($res);

echo 'opt["opt2"] = \'<option selected value=""></option>\';';
while ($raw=mysql_fetch_array($res))
{
echo 'opt["opt2"] = opt["opt2"]+ \'<option value="'.$raw['revenu2'].'">'.$raw['revenu2'].' €</option>\';';
}
mysql_close();

echo '</script>';

?>

<select id="revenu1" name="revenu">
<option selected value=""></option>

</select>

</form>

</body>

</html>
A voir également:

4 réponses

Tu mets par exemple qd tu construit ta fonction JS pour opt1
echo 'opt["opt1"] = \'<select id="revenu1" name="revenu"> \';';
echo 'opt["opt1"] =opt["opt1"]+ \'<option selected value=""></option>\';';

while ($raw=mysql_fetch_array($res))
{
echo 'opt["opt1"] = opt["opt1"]+\'<option value="'.$raw['revenu1'].'">'.$raw['revenu1'].' €</option>\';';
} 
echo 'opt["opt1"] =opt["opt1"]+ \'</select>\';';


ainsi dans le div ça va charger l'ensemble des balises de la liste et les lignes <option

C'est parce que Firefox "accepte" que JS modifie le contenu d'une liste et pas IE.

Si tu veux une solution sans charger les valeurs dans la partie JS de la page, tu peux t'orienter vers Ajax/Javascript. Qui te permet de faire des requettes en arrière plan, vers un script php qui interroge ta base et renvoie les valeurs;

Vas voir sur Google "requette Ajax"
1
Essayes en mettant à la place de:

<select id="revenu1" name="revenu">
<option selected value=""></option>

</select>


un calque <div id="revenu1"></div>

et en intégrant tes balises <select dans ta fonction JS qui écrit
0
Merci Alain, tu m'a fait avancer mais je n'ai pas résolu le problème.

Si je remplace
<select id="revenu1" name="revenu">
<option selected value=""></option>

</select>


un calque <div id="revenu1"></div>
mes infos s'inscriront dans la balise div (se qui n'été pas la cas avec la balise select) mais lorsque je rajoute une balise select j'ai mon menu déroulant vide et mes infos dans la div (en dessous).

Du coup j'en conclut que mon script marche mais que j'ai un big probléme avec ma balise select

T'oré pas une idée ?
0
Meci Alain, t un chef non seuleument ça marche impec mais en plus j'ai bien compris pourquoi ça ne marchait pas grace à ton explication.

Un grand merci !!!
0