probleme de form
Posté : 02 avr. 2006, 00:54
Salut, j'ai ecrit (avec difficulté et de l'aide) un script javascript pour un formulaire qui contient deux menu déroulant.
Le 1er menu permet de choisir un continent et le deuxieme permet de choisir une ville de ce continent.
Mon script marche bien, je l'ai testé sur une page a moi.
J'ai voulu l'inclure dans un formulaire deja existant mais il ne fonctionne plus. J'ai beau choisir un continent, le menu deroulent des villes reste vide.
J'ai l'impression qu'en le mettant dans un formulaire, les balises <form> créent une sorte de conflit( je ne sais pas si on peut dire ca).
Voila mon script si ca peut vous aider.
ps:en le placant sur la meme page mais en dehors du formulaire, celui ci se comporte bien...
Le 1er menu permet de choisir un continent et le deuxieme permet de choisir une ville de ce continent.
Mon script marche bien, je l'ai testé sur une page a moi.
J'ai voulu l'inclure dans un formulaire deja existant mais il ne fonctionne plus. J'ai beau choisir un continent, le menu deroulent des villes reste vide.
J'ai l'impression qu'en le mettant dans un formulaire, les balises <form> créent une sorte de conflit( je ne sais pas si on peut dire ca).
Voila mon script si ca peut vous aider.
Code : Tout sélectionner
villes = new Array();
<?
// avec une requete sql, on remplit le tableau javascript
$request = "SELECT code_continent AS c, nom_ville AS n FROM ville_desservie ORDER BY code_continent ASC, nom_ville ASC";
$result = @pg_query($request);
$row = 0;
while($enreg = @pg_fetch_array($result)){
echo 'villes['.$row.'] = ';
echo "new Array(".$enreg['c'].", '".$enreg['n']."');\n";
$row++;
}
$nb_villes = $row;
?>
// taille du tableau
nb_villes = villes.length;
// maj de la liste deroulante
function aeroports(continent){
var x;
var i, nb;
// on vide la liste deroulante
document.saisie.ville.options.length = 0;
// on remplit la liste avec les valeurs du tableau "villes"
// la première option
x = new Option("--", 0);
document.saisie.ville.options[0] = x;
nb = 0;
for(i=0; i<nb_villes; i++){
// si indice est ok, on ajoute l'option dans la liste déroulante
if(villes[i][0]==continent){
x = new Option(villes[i][1], villes[i][1]);
document.saisie.ville.options[document.saisie.ville.options.length] = x;
nb++;
}
}
// on sélectionne l'option dans la liste si l'utilisateur a tapé qqch et qu'il y a des résultats
document.saisie.ville.options.selectedIndex = (nb>0 ? 1 : 0);
// mise à jour du nombre d'elements dans la liste ; affichage sur la page, à coté de la liste déroulante
document.getElementById("lselect").innerHTML = "[" + nb + "]";
}
<form name="saisie">
<select name="continent" onChange="aeroports(this.options[this.selectedIndex].value)" style="width:110px;">
<option value="">--</option>
<option value="1">Europe</option>
<option value="2">Asie</option>
<option value="3">Océanie</option>
<option value="4">Amerique du Sud</option>
<option value="5">Amerique du Nord</option>
</select>
<select name="ville" style="width:140px;">
</select>
<span id="lselect"><?="[ ".$nb_villes." ]";?></span>
</form>