I agree with felgall and you'll probably do this with AJAX.
But if you're after just a javascript solution then this plain vanilla version might help you get started. Works in all the major browser (including opera)
Code:
<script type="text/javascript">
var selData = [
['state1','city11','city12','city13','city14'],
['state2','city21','city22'],
['state3','city31','city32','city33'],
['state4','city41','city42','city43','city44','city45']
];
function getCities(idx){
selCitiesObj.options.length = 0;
selCitiesObj.disabled = true;
if(idx == 0){return;}
for(i=0; i<selData[idx-1].length; i++){
var cityOpt = (i == 0)? new Option('Select a city','',false,false) : new Option(selData[idx-1][i],selData[idx-1][i],false,false);
selCitiesObj.options[selCitiesObj.options.length] = cityOpt;
}
selCitiesObj.disabled = false;
}
window.onload=function(){
var selStateObj = document.getElementById('selState');
selCitiesObj = document.getElementById('selCities');
selCitiesObj.disabled = true;
selStateObj.onchange=function(){getCities(this.selectedIndex);}
for(i=0; i<selData.length; i++){
var stateOpt = new Option(selData[i][0],selData[i][0],false,false);
selStateObj.options[selStateObj.options.length] = stateOpt;
}
}
</script>
Code:
<form action="" method="post">
<select id="selState" name="selState">
<option value="">Choose a State</option>
</select>
<select id="selCities" name="selCities"></select>
</form>
Bookmarks