Je cherche à modifier mon code ci-dessous pour l'améliorer, mais javascript n'est pas ma tasse de thé
Voilà mon problème: j'ai 5 cinq listes déroulantes liées entre elles et mises à jour en ajax.
Ce que je n'arrive pas à faire, c'est réinitialiser les valeurs quand on change une des listes, c'est à dire si on va jusque la liste 5 et que l'on veut changer la liste 2 je voudrais que les listes 3, 4 et 5 se remettent à l'état initial.
La seconde chose que j'aimerais modifier, c'est l'affichage du bouton submit à la fin, je voudrais qu'il soit visible tout le temps mais inactif (disabled) sauf quand le choix est fait dans ma liste 5.
J'ai tenté pas mal de chose mais mes connaissances en javascript et ajax sont limité
quelqu'un peut il m'aider ?
merci.
javascript code:
Ld1Id='';
Ld2Id='';
Ld3Id='';
Ld4Id='';
Ld5Id='';
id_liste='';
function ValideLd2(val) {
Ld1Id=val;
id_liste='2';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
var LD_URL = 'ValideLd2.php?Ld1='+Ld1Id;
ObjetXHR(LD_URL)
// Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
if (Ld2Id!='') {ValideLd3(''); }
//code que j'ai ajouter mais ça marche pas
if (Ld2Id!='') {ValideLd4(''); }
if (Ld2Id!='') {ValideLd5(''); }
}
function ValideLd3(val) {
Ld2Id=val;
id_liste='3'; //Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
var LD_URL = 'ValideLd3.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id;
if (Ld2Id=='') {var LD_URL = 'ValideLd3.php';}
ObjetXHR(LD_URL)
if (Ld3Id!='') {ValideLd4('');}
}
function ValideLd4(val) {
Ld3Id=val;
id_liste='4'; //Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
var LD_URL = 'ValideLd4.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id+'&Ld3='+Ld3Id;
if (Ld3Id=='') {var LD_URL = 'ValideLd4.php';}
ObjetXHR(LD_URL)
if (Ld4Id!='') {ValideLd5(''); }
}
function ValideLd5(val) {
Ld4Id=val;
id_liste='5'; //Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
var LD_URL = 'ValideLd5.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id+'&Ld3='+Ld3Id+'&Ld4='+Ld4Id;
if (Ld4Id=='') {var LD_URL = 'ValideLd5.php';}
ObjetXHR(LD_URL)
}
function ObjetXHR(LD_URL) {
//creation de l'objet XMLHttpRequest
if (window.XMLHttpRequest) { // Mozilla,...
xmlhttp=new XMLHttpRequest();
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType('text/xml');
}
xmlhttp.onreadystatechange=ChargeLd;
xmlhttp.open("GET", LD_URL, true);
xmlhttp.send(null);
} else if (window.ActiveXObject) { //IE
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
if (xmlhttp) {
xmlhttp.onreadystatechange=ChargeLd;
xmlhttp.open('GET', LD_URL, false);
xmlhttp.send();
}
}
// Bouton non apparent car modification de LD1 ou Ld2
document.getElementById('buttons').style.display='none';
}
// fonction pour manipuler l'appel asynchrone
function ChargeLd() {
if (xmlhttp.readyState==4) {
if (xmlhttp.status==200) {
//span id="niv2" ou "niv3"
document.getElementById('niv'+id_liste).innerHTML=xmlhttp.responseText;
if (xmlhttp.responseText.indexOf('disabled')<=0) {
//focus sur liste déroulante 2 ou 3
document.getElementById('Liste'+id_liste).focus();
}
}
}
}
function Affiche_Btn() {
document.getElementById('buttons').style.display='inline';
}
Ma page principale:
<p>Select your choice from the drop-down lists.</p>
<form method="post" action="sales.html" class="_form" id="search_id">
<?php include 'ValideLd1.php'; ?>
<!--Pour remplir la liste déroulante 1-->
<span id="niv2">
<?php include 'ValideLd2.php'; ?>
</span>
<!--Pour remplir la liste déroulante 2-->
<span id="niv3">
<?php include 'ValideLd3.php'; ?>
</span>
<!--Pour remplir la liste déroulante 3-->
<span id="niv4">
<?php include 'ValideLd4.php'; ?>
</span>
<!--Pour remplir la liste déroulante 4-->
<span id="niv5">
<?php include 'ValideLd5.php'; ?>
</span>
<!--Pour remplir la liste déroulante 5-->
<span id="buttons">
<p class="type-button"><br />
<input type="submit" value="submit">
</p>
</span>
</form>
Mon code des listes déroulant (en fait j'ai 5 page dans le même genre):
<?php
include ("includes/config.inc.php");
$Ld1_retour ='';
$Ld2_retour ='';
$Ld3_retour ='';
$Ld4_retour ='';
if (isset($_GET['Ld1'])) {$Ld1_retour = $_GET['Ld1'];}
if (isset($_GET['Ld2'])) {$Ld2_retour = $_GET['Ld2'];}
if (isset($_GET['Ld3'])) {$Ld3_retour = $_GET['Ld3'];}
if (isset($_GET['Ld4'])) {$Ld4_retour = $_GET['Ld4'];}
if (($Ld1_retour!='')&&($Ld2_retour!='')&&($Ld3_retour!='')&&($Ld4_retour!='')) {
$rq="ma_requete";
$rq_pos_id=0;
$rq_pos_val=1;
$result= mysql_query ($rq) or die ("Select impossible!");
$retour = '<p><label for="Liste5">Budget :</label><select name="Liste5" id="Liste5" size="1" onchange="Affiche_Btn();">';
$retour .= '<option selected value="">Choisir...</option>';
if (mysql_num_rows($result) != 0) {
while ($row = mysql_fetch_row($result)) {
$retour .= '<option value="'. $row[$rq_pos_id] .'">'. $row[$rq_pos_val] .'</option>';
}
$retour .= '</select></p>';
} else {
$retour = '<p><label for="Liste5">Budget :</label><input id="Liste5" type="text" size="10" value="Aucune valeur" disabled></p>';
}
mysql_free_result($result);
mysql_close();
}else{
$retour = '<p><label for="Liste5">Budget :</label><select name="Liste5" id="Liste5" size="1" disabled><option>Aucune valeur</option></select></p>';
}
echo $retour
?>