Bonsoir et merci de votre réponse Lenézé
.
Le script ne correspond pas réellement à ce dont je souhaite parvenir. Je souhaite pouvoir conserver le contenu des formulaires (<option>a</option>) lors de la sélection et ne conserver que le résultat du $_POST["***"], sinon dit le résultat du dernier formulaire sélectionné.
Concrètement, voici à quoi ressemble actuellement mon code.
J'utilise le script ci-dessous pour montrer/cacher diverses éléments et notamment des formulaires.
1 2 3 4 5 6 7 8 9 10 11 12 13
| function afficheBoitedpt(num) {
var maxBoitedpt = 23; // Indiquer ici le nombre maximale de boite possible
for (var i = 1; i <= maxBoitedpt; i++) {
var dpt = document.getElementById('dpt'+i);
if (dpt) {
if (i == num) {
dpt.style.display = '';
} else {
dpt.style.display = 'none';
}
}
}
} |
Ce code est associé au formulaires suivant, donc chaque sélection fait par le 1er formulaire ouvre ou ferme un 'div' différent
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <select name="categorie">
<option value="0">«Choisissez la catégorie»</option>
<option value='1' onclick="afficheBoite(1);">+++</option>
<option value='2' onclick="afficheBoite(2);">+++</option>
<option value='3' onclick="afficheBoite(3);">+++</option>
</select>
<div id='boite1' style='display:none;'>
<select name="departement1" id="1" onChange="document.getELementById('2').options.length=0;">
<option value="0">«Choisissez»</option>
<option value="1" <?php if($departement1==1){echo "selected='selected'";}?>>++</option>
<option value="2" <?php if($departement1==2){echo "selected='selected'";}?>>++</option>
</select>
</div>
<div id='boite2' style='display:none;'>
<select name="departement2" id="2" onChange="document.getELementById('1').options.length=0;">
<option value="0">«Choisissez»</option>
<option value="1" <?php if($departement2==1){echo "selected='selected'";}?>>++</option>
<option value="2" <?php if($departement2==2){echo "selected='selected'";}?>>++</option>
</select>
</div>
<!--ETC. car il y a d'autres formulaires--> |
A la suite, vient le traitement du formulaire :
1 2 3 4 5 6 7 8 9 10 11
| <?php
if (isset($_POST["envoyer"]))
{
$departement1 = stripcslashes(htmlspecialchars($_POST["departement1"]));
$departement2 = stripcslashes(htmlspecialchars($_POST["departement2"]));
echo ''.$departement1.'<br/>'.$departement2.'';
}
?> |
En l'état actuelle et uniquement grâce à la fonction
onChange="document.getELementById('**').options.length=0;"
..et en fonction du "select" sélectionné, l'une des 2 variables devient vide.
Par contre, si j'ajoute un 3ieme formulaire, la fonction
onChange="document.getELementById('**').options.length=0;"
..devient obsolète et chaque variable me retourne alors un résultat (au lieu d'être vide) en fonction des "select" utilisés.
Pas facile à expliquer
.
Partager