ユーザーが最初に国を選択してから、その国のオプションの郡リストをアクティブにできるようにする古い古い JavaScript コードがあります。読み込み時に、国のオプションは ANY と表示され、郡ラベルのオプションは最初に国を選択するように表示されるはずですが、そうではありません。ユーザーが最初に国を選択し、次に戻って [ANY] を選択した場合にのみ、[最初に郡を選択] 条件が表示されます。
jQueryは言うまでもなく、JavaScriptはまったく得意ではありません。既存の js を修正する方法、またはより優れた無駄のないコードで必要なものを達成する方法は?
よろしくお願いいたします。
<div>
<label id="country">Country of birth:</label>
<select name="country" tabindex="7" onchange="populateCountiesDropdown(this[this.selectedIndex].value);">
<option value="">Any</option>
<option value="ENGLAND">England</option>
<option value="IRELAND">Ireland</option>
<option value="SCOTLAND">Scotland</option>
<option value="WALES">Wales</option>
</select>
<script type="text/javascript">
setSelect(document.main.country, '');
</script>
</div>
<div>
<label id="county">County of birth:</label>
<select name="county" tabindex="8">
</select>
<script type="text/javascript">
populateCountiesDropdown(document.main.country.value);
setSelect(document.main.county, "");
</script>
</div>
<script type="text/javascript">
var counties_dropdown = new Array();
counties_dropdown["ENG"] = new Array(" |All counties in country" ,"BDF|Bedfordshire","BRK|Berkshire","BKM|Buckinghamshire","CAM|Cambridgeshire","CHI|Channel Islands","CHS|Cheshire","CON|Cornwall","CUL|Cumberland","DBY|Derbyshire","DEV|Devon","DOR|Dorset","DUR|Durham","ESS|Essex","GLS|Gloucestershire","HAM|Hampshire","HEF|Herefordshire","HRT|Hertfordshire","HUN|Huntingdonshire","IOM|Isle of Man","KEN|Kent","LAN|Lancashire","LEI|Leicestershire","LIN|Lincolnshire","LND|London","MDX|Middlesex","NFK|Norfolk","NTH|Northamptonshire","NBL|Northumberland","NTT|Nottinghamshire","OXF|Oxfordshire","RUT|Rutlandshire","SAL|Shropshire","SOM|Somerset","STS|Staffordshire","SFK|Suffolk","SRY|Surrey","SSX|Sussex","WAR|Warwickshire","WES|Westmorland","WIL|Wiltshire","WOR|Worcestershire","YKS|Yorkshire" );
counties_dropdown["IRL"] = new Array(" |All counties in country" ,"ANT|Antrim","ARM|Armagh","CAR|Carlow","CAV|Cavan","CLA|Clare","COR|Cork","LDY|Derry (Londonderry)","DON|Donegal","DOW|Down","DUB|Dublin","FER|Fermanagh","GAL|Galway","KER|Kerry","KID|Kildare","KIK|Kilkenny","OFF|Kings (Offaly)","LET|Leitrim","LIM|Limerick","LOG|Longford","LOU|Louth","MAY|Mayo","MEA|Meath","MOG|Monaghan","NAI|Nairnshire","LEX|Queens (Laois)","ROS|Roscommon","SLI|Sligo","TIP|Tipperary","TYR|Tyrone","WAT|Waterford","WEM|Westmeath","WEX|Wexford","WIC|Wicklow" );
counties_dropdown["SCT"] = new Array(" |All counties in country" ,"ABD|Aberdeenshire","ARL|Argyllshire","AYR|Ayrshire","BAN|Banffshire","BEW|Berwickshire","BUT|Buteshire","CAI|Caithness","CLK|Clackmannanshire","DFS|Dumfriesshire","DNB|Dunbartonshire","FIF|Fife","ANS|Forfarshire (Angus)","ELN|Haddingtonshire (East Lothian)","INV|Invernessshire","KCD|Kincardineshire","KRS|Kinrossshire","KKD|Kirkcudbrightshire","LKS|Lanarkshire","WLN|Linlithgowshire (West Lothian)","MLN|Midlothian","MOR|Morayshire","PEE|Peeblesshire","PER|Perthshire","RFW|Renfrewshire","ROC|Ross and Cromarty","ROX|Roxburghshire","SEL|Selkirkshire","SHI|Shetland Islands","STI|Stirlingshire","SUT|Sutherland","WIG|Wigtownshire" );
counties_dropdown["WLS"] = new Array(" |All counties in country" ,"AGY|Anglesey","BRE|Brecknockshire","CAE|Caernarvonshire","CGN|Cardiganshire","CMN|Carmarthenshire","DEN|Denbighshire","FLN|Flintshire","GLA|Glamorganshire","MER|Merionethshire","MON|Monmouthshire","MGY|Montgomeryshire","PEM|Pembrokeshire","RAD|Radnorshire" );
function populateCountiesDropdown(formObj, country) {
formObj.county.options.length = 0;
if(country == "") {
formObj.county.options[0] = new Option('Choose a country first', '');
return;
}
for(i = 0; i < counties_dropdown[country].length; i++) {
var option = new Option(counties_dropdown[country][i].substr(counties_dropdown[country][i].indexOf('|')+1),
counties_dropdown[country][i].substr(0,counties_dropdown[country][i].indexOf('|')));
formObj.county.options[i] = option;
}
formObj.county.options[0].value = '';
}
</script>