par
Mouki » 13 févr. 2006, 16:19
Voilà un truc qui marche avec 2 menus... j'ai fait ça avec PEAR et ça ma généré ça... tu peux l'améliorer :
<html>
<body>
<script type="text/javascript">
//<![CDATA[
hs_ihsTest_0 = {
"0":"Belle & Sebastian",
"1":"Elliot Smith",
"2":"Beck"
}
hs_ihsTest_1 = {
"3":"Noir Desir",
"4":"Violent Femmes"
}
hs_ihsTest_2 = {
"5":"Wagner",
"6":"Mozart",
"7":"Beethoven"
}
function swapOptions(frm, grpName, eleIndex, nbElements, arName)
{
var n = "";
var ctl;
for (var i = 0; i < nbElements; i++) {
ctl = frm.form[grpName+'['+i+']'];
if (!ctl) {
ctl = frm.form[grpName+'['+i+'][]'];
}
if (i <= eleIndex) {
n += "_"+ctl.value;
} else {
ctl.length = 0;
}
}
var t = eval("typeof("+arName + n +")");
if (t != 'undefined') {
var the_array = eval(arName+n);
var j = 0;
n = eleIndex + 1;
ctl = frm.form[grpName+'['+ n +']'];
if (!ctl) {
ctl = frm.form[grpName+'['+ n +'][]'];
}
for (var i in the_array) {
opt = new Option(the_array[i], i, false, false);
ctl.options[j++] = opt;
}
}
if (eleIndex+1 < nbElements) {
swapOptions(frm, grpName, eleIndex+1, nbElements, arName);
}
}
//]]>
</script>
<form action="/testPear/docs/elements.php" method="get" name="frmTest" id="frmTest">
<select style="width: 20em;" name="ihsTest[0]" onchange="swapOptions(this, 'ihsTest', 0, 2, 'hs_ihsTest');">
<option value="0">Pop</option>
<option value="1">Rock</option>
<option value="2">Classical</option>
</select><br /><select style="width: 20em;" name="ihsTest[1]">
<option value="0">Belle & Sebastian</option>
<option value="1">Elliot Smith</option>
<option value="2">Beck</option>
</select>
</form>
</body>
</html>
Ca te va ?!?
Voilà un truc qui marche avec 2 menus... j'ai fait ça avec PEAR et ça ma généré ça... tu peux l'améliorer :
[php]<html>
<body>
<script type="text/javascript">
//<![CDATA[
hs_ihsTest_0 = {
"0":"Belle & Sebastian",
"1":"Elliot Smith",
"2":"Beck"
}
hs_ihsTest_1 = {
"3":"Noir Desir",
"4":"Violent Femmes"
}
hs_ihsTest_2 = {
"5":"Wagner",
"6":"Mozart",
"7":"Beethoven"
}
function swapOptions(frm, grpName, eleIndex, nbElements, arName)
{
var n = "";
var ctl;
for (var i = 0; i < nbElements; i++) {
ctl = frm.form[grpName+'['+i+']'];
if (!ctl) {
ctl = frm.form[grpName+'['+i+'][]'];
}
if (i <= eleIndex) {
n += "_"+ctl.value;
} else {
ctl.length = 0;
}
}
var t = eval("typeof("+arName + n +")");
if (t != 'undefined') {
var the_array = eval(arName+n);
var j = 0;
n = eleIndex + 1;
ctl = frm.form[grpName+'['+ n +']'];
if (!ctl) {
ctl = frm.form[grpName+'['+ n +'][]'];
}
for (var i in the_array) {
opt = new Option(the_array[i], i, false, false);
ctl.options[j++] = opt;
}
}
if (eleIndex+1 < nbElements) {
swapOptions(frm, grpName, eleIndex+1, nbElements, arName);
}
}
//]]>
</script>
<form action="/testPear/docs/elements.php" method="get" name="frmTest" id="frmTest">
<select style="width: 20em;" name="ihsTest[0]" onchange="swapOptions(this, 'ihsTest', 0, 2, 'hs_ihsTest');">
<option value="0">Pop</option>
<option value="1">Rock</option>
<option value="2">Classical</option>
</select><br /><select style="width: 20em;" name="ihsTest[1]">
<option value="0">Belle & Sebastian</option>
<option value="1">Elliot Smith</option>
<option value="2">Beck</option>
</select>
</form>
</body>
</html>[/php]
Ca te va ?!?