Что бы я сделал, это создал бы оба, каждый в DIV;тогда просто прячься, что не нужно.Это устраняет необходимость в тяжелых манипуляциях с DOM (так как вы делаете это только один раз при загрузке страницы, в некоторых браузерах меньше возможностей для утечки памяти кашель ), и сложнее случайно испортитьсостояние приложения (что с Альбертой и Алабамой, совместно использующими один и тот же код и все такое).
Это будет начальная страница:
<input type="radio" id="country_usa" name="country" value="USA"> USA
<input type="radio" id="country_canada" name="country" value="Canada"> Canada
<div id="usa_select"></div>
<div id="canada_select"></div>
и JavaScript для использования с ним (jQuery используется здесь длякраткость):
$(document).ready(function(){
// hide both <div> containers on page load
$('#canada_select').hide();
$('#usa_select').hide();
// create and populate both <select> boxes:
$('#canada_select').append('<select name="province_canada">'
+ '<option value="AL">Alberta</option>'
+ '<option value="BC">British Columbia</option>...'
+ '</select>'
);
$('#usa_select').append('<select name="state_usa">'
+ '<option value="AL">Alabama</option>'
+ '<option value="AK">Alaska</option>...'
+ '</select>'
);
};
// we'll also need handlers to show the correct list,
// depending on the selected country
$('#country_usa').click(function(){
// we want US states
$('#canada_select').hide();
$('#usa_select').show();
});
$('#country_canada').click(function(){
// we want Canadian provinces
$('#usa_select').hide();
$('#canada_select').show();
});
Это должен быть результат:
<input type="radio" id="country_usa" name="country" value="USA"> USA
<input type="radio" id="country_canada" name="country" value="Canada"> Canada
<div id="usa_select">
<select name="state_usa">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
...
</select>
</div>
<div id="canada_select">
<select name="province_canada">
<option value="AL">Alberta</option>
<option value="BC">British Columbia</option>
...
</select>
</div>
На бэкенде процесс state_usa
iff country
== 'США';процесс province_canada
если country
== 'Канада'.