[Javascript] Select Multiple / Select

Résolu/Fermé
O'mod'O - 19 janv. 2010 à 15:14
 O'mod'O - 20 janv. 2010 à 11:14
Bonjour,
je suis actuellement entrain de bloquer sur un point qui m'énerve. Je tourne en rond depuis 2h et je n'arrive pas à avoir le recul sur ce problème. J'aimerais un oeil et une aide extérieurs.
Mon but est de générer une liste (à choix multiple donc un <select multiple />) en fonction d'une première liste (déroulante cette fois ci, donc un <select />). Le souci est que ma liste multiple n'est jamais mise à jour (elle reste vide quelque soit mon choix dans la liste déroulante).

Code HTML:
        <td>
		<select id="typeSites" name="typeSites" onchange="selectSites();">
			<option value="'HM' OR segment = 'M'">Tout</option>
			<option value="'HM'">HM</option>
			<option value="'M'">M</option>
		</select>
	</td>
	<td>
			<select id="listeSites" name="listeSites" multiple size="7" />
	</td>


Code JavaScript:
function selectSites()
{
    var valeurSelect = "";
    var typeSite = document.getElementById('typeSites');;
    valeurSelect = typeSite.options[typeSite.selectedIndex].value;
    var xhr_object = null;
    if(window.ActiveXObject) // Internet Explorer 
    	xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    else if(window.XMLHttpRequest) // Firefox 
    	xhr_object = new XMLHttpRequest();

    	xhr_object.open("GET", listeSites.php?type="+valeurSelect, false);
    	xhr_object.onreadystatechange = function() {
    		if(xhr_object.readyState == 4)
    		{
    			eval(xhr_object.responseText);
    		}
    	} 
    	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	xhr_object.send(null);
    }
}


Code PHP:
$query = "SELECT label FROM sites WHERE type = ".$_GET["type"]." ORDER BY label";
$ret = mysql_query($query) or die(mysql_error());
while ($res = mysql_fetch_assoc( $ret ))
{
	echo ('var element = document.createElement("option");');
	echo ('element.text = "'.$res["label"].'";');
	echo ('element.value = "'.$res["label"].'";');
	echo ('document.getElementById("listeSites")[0].add(element);');
}


Merci de votre aide !

2 réponses

Petite rectification dans le code HTML:

Ce n'est pas:
<option value="'HM' OR segment = 'M'">Tout</option>
mais bien:
<option value="'HM' OR type = 'M'">Tout</option>
0
Résolu !

Solution:
for (i = 0; ... ; i++)
{
     liste.options[i] = new Option( text , value );
}
0