Reputation: 15
Here's the Thing: If I Select:
"Asia", Asia Selection will be Shown, the Rest will be Hidden. and So On.
<select name="continent" id="continent" size="1">
<option value="Pick a Continent">Pick a Continent First.</option>
<option value="Africa" class="africa">Africa</option>
<option value="America" class="america">America</option>
<option value="Asia" class="asia">Asia</option>
<option value="Europe" class="europe">Europe</option>
<option value="Oceania and Pacific" class="oceana">Oceania and Pacific</option>
</select>
<select name="Africa" id="africa" size="1">
<option value="Pick a Sub-Region.">Pick a Sub-Region.</option>
<option value="North Africa">North Africa</option>
<option value="East Africa">East Africa</option>
<option value="Central Africa">Central Africa</option>
<option value="West Africa">West Africa</option>
<option value="Southern Africa">Southern Africa</option>
</select>
<select name="America" id="america" size="1">
<option value="Pick a Sub-Region.">Pick a Sub-Region.</option>
<option value="North America">North America</option>
<option value="Central America">Central America</option>
<option value="South America">South America</option>
</select>
CSS and/or JavaScript on JSFiddle would Do. Thank You.
EDIT: Here's What I Did on JavaScript (So Far)
function hide(africa){
document.getElementById('africa');
africa.style.visibility = 'hidden';
}
function show(africa){
document.getElementById('africa');
africa.style.visibility = 'visible';
}
function hide(america){
document.getElementById('america');
america.style.visibility = 'hidden';
}
function show(america){
document.getElementById('america');
america.style.visibility = 'visible';
}
Upvotes: 0
Views: 167
Reputation: 535
function hide(elem){
//hide all sub regions
for (i = 0; i < document.getElementsByClassName('subRegion').length; i++){
document.getElementsByClassName('subRegion')[i].style.display = 'none';
}
var sub = elem.value.toLowerCase();
document.getElementById(sub).style.display = 'inline';
}
.subRegion{
display:none;
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<FORM>
<select name="continent" id="continent" size="1" onchange="hide(this)">
<option value="Pick a Continent">Pick a Continent First.</option>
<option value="Africa" class="africa">Africa</option>
<option value="America" class="america">America</option>
<option value="Asia" class="asia">Asia</option>
<option value="Europe" class="europe">Europe</option>
<option value="Oceania and Pacific" class="oceana">Oceania and Pacific</option>
</select>
<select name="Africa" id="africa" size="1" class="subRegion">
<option value="Pick a Sub-Region.">Pick a Sub-Region.</option>
<option value="North Africa">North Africa</option>
<option value="East Africa">East Africa</option>
<option value="Central Africa">Central Africa</option>
<option value="West Africa">West Africa</option>
<option value="Southern Africa">Southern Africa</option>
</select>
<select name="America" id="america" size="1" class="subRegion">
<option value="Pick a Sub-Region.">Pick a Sub-Region.</option>
<option value="North America">North America</option>
<option value="Central America">Central America</option>
<option value="South America">South America</option>
</select>
</form>
</body>
</html>
Upvotes: 0
Reputation: 704
Here is what you can do using Jquery
HTML goes this way
<select name="continent" id="continent" size="1">
<option value="Pick a Continent">Pick a Continent First.</option>
<option value="Africa" class="africa">Africa</option>
<option value="America" class="america">America</option>
<option value="Asia" class="asia">Asia</option>
<option value="Europe" class="europe">Europe</option>
<option value="Oceania and Pacific" class="oceana">Oceania and Pacific</option>
</select>
<select name="Africa" id="africa" size="1" class="subselect">
<option value="Pick a Sub-Region.">Pick a Sub-Region.</option>
<option value="North Africa">North Africa</option>
<option value="East Africa">East Africa</option>
<option value="Central Africa">Central Africa</option>
<option value="West Africa">West Africa</option>
<option value="Southern Africa">Southern Africa</option>
</select>
<select name="America" id="america" size="1" class="subselect">
<option value="Pick a Sub-Region.">Pick a Sub-Region.</option>
<option value="North America">North America</option>
<option value="Central America">Central America</option>
<option value="South America">South America</option>
</select>
Your css [i have added class subselect for your other select boxes]
.subselect{
display:none;
}
And then the JS
$(document).ready(function(){
$('#continent').on('change',function(){ //to capture when option is selected
var data= $('#continent option:selected').val(); //get the value of selected option
var selectbox="select[name='"+data+"']"; //finding the respective subselect
$(selectbox).show(); //showing the select box required
});
});
Here is a fiddle for your reference DEMO check it out
And if you want to hide the previous select if user selects a new Continent then use this js
$(document).ready(function(){
$('#continent').on('change',function(){ //to capture when option is selected
$('.subselect').css('display','none');
var data= $('#continent option:selected').val(); //get the value of selected option
var selectbox="select[name='"+data+"']"; //finding the respective subselect
$(selectbox).show(); //showing the select box required
});
});
Upvotes: 1
Reputation: 28387
You forgot to bind the event to the continent
select.
document.getElementById("continent").addEventListener("change", showhide);
function showhide() {
var sel = document.getElementById("continent").value;
if (sel == 'Africa') {
document.getElementById('africa').style.display = 'inline-block';
document.getElementById('america').style.display = 'none';
} else {
document.getElementById('america').style.display = 'inline-block';
document.getElementById('africa').style.display = 'none';
}
}
#africa, #america {
display: none;
}
<select name="continent" id="continent" size="1">
<option value="Pick a Continent">Pick a Continent First.</option>
<option value="Africa" class="africa">Africa</option>
<option value="America" class="america">America</option>
<option value="Asia" class="asia">Asia</option>
<option value="Europe" class="europe">Europe</option>
<option value="Oceania and Pacific" class="oceana">Oceania and Pacific</option>
</select>
<select name="Africa" id="africa" size="1">
<option value="Pick a Sub-Region.">Pick a Sub-Region.</option>
<option value="North Africa">North Africa</option>
<option value="East Africa">East Africa</option>
<option value="Central Africa">Central Africa</option>
<option value="West Africa">West Africa</option>
<option value="Southern Africa">Southern Africa</option>
</select>
<select name="America" id="america" size="1">
<option value="Pick a Sub-Region.">Pick a Sub-Region.</option>
<option value="North America">North America</option>
<option value="Central America">Central America</option>
<option value="South America">South America</option>
</select>
Upvotes: 0