L'idea è quella di intercettare l'evento, svuotare la combo dei valori e ripopolarla con i dati che il server ti ha spedito:
Codice PHP:
<html>
<script>
var content = {
"Nomi" : ["Mario", "Gianni", "Luca"],
"Auto" : ["BMW", "AUDI", "FIAT"]
};
function clearSelect(select) {
for(var i = 0, len = select.options.length; i < len; i++) {
select.remove(0);
}
}
function changeCat(select) {
var valuesSelect = document.getElementById("values");
var idx = select.selectedIndex;
clearSelect(valuesSelect);
if(idx === 0) {
return;
}
//
var cat = select.options[idx].value;
var values = content[cat];
var opt = null;
for(var i = 0; i < values.length; i++) {
opt = document.createElement('option');
opt.text = values[i];
opt.value = values[i];
valuesSelect.add(opt);
}
}
</script>
<body>
<select id="cat" onchange="javascript:changeCat(this)">
<option value="Empty">-</option>
<option value="Nomi">Nomi</option>
<option value="Auto">Auto</option>
</select>
<select id="values"></select>
</body>
</html>
La variabile content mi serve per simulare la risposta del server.
:ciauz