我有一箇舊的JavaScript代碼,應該允許用戶先選擇一個國家然後激活該國家的縣列表選項。在加載時,該國的選項表示ANY,並且選擇縣的標籤應該說選擇先選擇一個國家,但它不。只有用戶先選擇一個國家,然後再選擇ANY,纔會出現選擇縣的第一個條件。選擇國家後填充縣名單下拉菜單
我不擅長JavaScript,不提jQuery。如何糾正現有的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>
我還沒有真正檢查過這個徹底,但我想你的'counties_dropdown'地圖應該有與您的選項相同的值的鍵。也就是說,不是'ENG','IRL'等等,它們應該是'ENGLAND','IRELAND'等等。而且,你的代碼中沒有jQuery。 – Xophmeister
是的,目前沒有jQuery。我問是否可以用jQuery來輕鬆實現,代碼少得多。至於鍵,它似乎在網頁上正常工作;例如,當你選擇英格蘭時,英格蘭的縣名單出現。 – user1400854