Avatar billede hav0k Nybegynder
26. december 2005 - 13:15 Der er 11 kommentarer og
1 løsning

Lande og kontinenter i drop-down menu?

Jeg er igang med at lave et engelsk site hvor brugerne skal vælge hvilket kontinent og derefter hvilket land de kommer fra (listen over lande ændrer sig dynamisk efter kontinentet).

Selve koden til dette er et mindre spørgsmål (som jeg dog stadig gerne vil have med), men jeg har ikke særligt meget lyst til selv at sidde og skrive alle landene ned, så mit spørgsmål er også om der findes en liste over dem som kan downloades (husk at det skal være på engelsk), og let sættes ind i en dropdown menu?
Avatar billede roenving Novice
26. december 2005 - 14:27 #1
Du kunne jo tage listerne ved at starte herfra: http://www.aneki.com/africa.html !-)
Avatar billede roenving Novice
26. december 2005 - 15:01 #2
-- og det kan f.eks. se sådan ud ...

-- bemærk, at jeg simpelthen har taget anekis lister, men dog udeladt territorier i Caribien (f.eks. British Virgin Islands og Virgin Islands !-), mens Falkland Islands er med alligevel, og f.eks. Rusland og Belize findes flere steder !o]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>

<title>Tomt dokument</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="roenving,http://www.eksperten.dk/spm/615326">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
html,body{height:100%;margin:0px;border:0px;padding:0px;font-family:tahoma,verdana,arial,sans-serif;font-size:small;}
</style>
<script language="javascript" type="text/javascript">
var countries = new Array();
countries[countries.length] = ["Algeria","Angola","Benin","Botswana","Burkina Faso","Burundi","Cameroon","Cape Verde","Central African Republic","Chad","Comoros","Congo, Democratic Republic of the","Congo, Republic of the","Cote d'Ivoire","Djibouti","Egypt","Equatorial Guinea","Eritrea","Ethiopia","Gabon","Gambia, The","Ghana","Guinea","Guinea-Bissau","Kenya","Lesotho","Liberia","Libya","Madagascar","Malawi","Mali","Mauritania","Mauritius","Morocco","Mozambique","Namibia","Niger","Nigeria","Rwanda","Sao Tome and Principe","Senegal","Seychelles","Sierra Leone","Somalia","South Africa","Sudan","Swaziland","Tanzania","Togo","Tunisia","Uganda","Western Sahara","Zambia","Zimbabwe"];
countries[countries.length] = ["Afghanistan","Armenia","Azerbaijan","Bangladesh","Bhutan","Brunei","Burma","Cambodia","China","Georgia","Hong Kong","India","Indonesia","Japan","Kazakhstan","Korea, North","Korea, South","Kyrgyzstan","Laos","Macau","Malaysia","Maldives","Mongolia","Nepal","Pakistan","Papua New Guinea","Philippines","Russia","Singapore","Sri Lanka","Taiwan","Tajikistan","Thailand","Turkey","Turkmenistan","Uzbekistan","Vietnam"];
countries[countries.length] = ["Antigua and Barbuda","Bahamas, The","Barbados","Belize","Cuba","Dominica","Dominican Republic","Grenada","Haiti","Jamaica","Saint Kitts and Nevis","Saint Lucia","Saint Vincent and the Grenadines","Trinidad and Tobago"];
countries[countries.length] = ["Belize","Costa Rica","El Salvador","Guatemala","Honduras","Nicaragua","Panama"];
countries[countries.length] = ["Albania","Andorra","Austria","Belarus","Belgium","Bosnia and Herzegovina","Bulgaria","Croatia","Cyprus","Czech Republic","Denmark","Estonia","Finland","France","Germany","Greece","Holy See (Vatican City)","Hungary","Iceland","Ireland","Italy","Latvia","Liechtenstein","Lithuania","Luxembourg","Macedonia, The Former Yugoslav Republic of","Malta","Moldova","Monaco","Netherlands","Norway","Poland","Portugal","Romania","Russia","San Marino","Serbia and Montenegro","Slovakia","Slovenia","Spain","Sweden","Switzerland","Turkey","Ukraine","United Kingdom"];
countries[countries.length] = ["Bahrain","Gaza Strip","Iran","Iraq","Israel","Jordan","Kuwait","Lebanon","Oman","Qatar","Saudi Arabia","Syria","United Arab Emirates","West Bank","Yemen"];
countries[countries.length] = ["Canada","Mexico","United States"];
countries[countries.length] = ["Australia","Cook Islands","Fiji","Kiribati","Marshall Islands","Micronesia, Federated States of","Nauru","New Zealand","Niue","Palau","Samoa","Solomon Islands","Tonga","Tuvalu","Vanuatu"];
countries[countries.length] = ["Argentina","Bolivia","Brazil","Chile","Colombia","Ecuador","Falkland Islands (Islas Malvinas)","French Guiana","Guyana","Paraguay","Peru","South Georgia and the South Sandwich Islands","Suriname","Uruguay","Venezuela"];

function showCountries(elm){
  var sel = elm.form.select2;
  if(elm.selectedIndex==0){
    sel.style.display = 'none';
  }else{
    sel.length = 1;
    var arrNum = elm.selectedIndex-1;
    for(i=0;countries[arrNum].length>i;i++){
      sel.options[sel.length] = new Option(countries[arrNum][i]);
      sel.style.display = 'inline';
    }
  }
}
</script>
</head>
<body>
<form id="minForm" name="minForm">
Select region:<br>
<select name="minSelect" id="minSelect" onchange="showCountries(this);">
    <option>-- Select region --</option>
    <option>Africa</option>
    <option>Asia</option>
    <option>Caribbean</option>
    <option>Central America</option>
    <option>Europe</option>
    <option>Middle East</option>
    <option>North America</option>
    <option>Oceania</option>
    <option>South America</option>
</select>
<br>Select country:<br>
<select name="select2" id="select2" style="display:none;" onchange="">
    <option value="">-- Select country --<br>
</select>
<br><br>
<input type="submit" value="send">
</form>

</body>

</html>

PS. Eksperten afskærer lange strenge, men det findes, når du kopierer !-)
Avatar billede hav0k Nybegynder
26. december 2005 - 21:03 #3
Det ser jo ud til at virke udmærket :)

Men synes dog inddelingen i kontinenter er lidt underlig - ville helst gerne have den i den klassiske: Europa, Afrika, Asien, Nordamerika, Sydamerika og Australien. Hvor kan jeg finde det?
Avatar billede roenving Novice
27. december 2005 - 13:23 #4
Jeg ville simpelthen flytte de forskellige rundt, for det er jo ikke så svært, at flytte Mellemøsten til Asien og Caribien og Mellemamerika til Sydamerika ?-)

-- og hvis du ikke selv vil sætte dem på deres alfabetiske pladser, kan du sortere dem on-the-fly:

...
    var arrNum = elm.selectedIndex-1;
    countries[arrNum].sort();
    for(i=0;countries[arrNum].length>i;i++){
...
Avatar billede hav0k Nybegynder
27. december 2005 - 14:05 #5
jeg har fundet ud af at sortere dem :) og dit første kodeeksempel virker jo upåklageligt :) Så smid et svar. Lige en sidste ting som jeg håber du måske vil svare på: hvordan gør jeg hvis jeg har en dropdown menu TIL lidt længere nede på siden, som også skal bruge de samme lande og kontinenter? Kan man udvide funktionen så den gælder ikke bare en select2 men også select3:

function showCountries(elm){
  var sel = elm.form.select2;

function showCountries(elm){
  var sel = elm.form.select3;

er ikke rigtig inde i javascript så kan ikke lige overskue hvordan det skal skrues sammen?
Avatar billede roenving Novice
27. december 2005 - 14:10 #6
Ja, så skal du bare definere det i kaldet:

onchange="showCountries(this,'select2');"

-- og ændre funktionen f.eks. sådan:

function showCountries(elm,sel){
  var sel = elm.form.elements[sel];
  if(elm.selectedIndex==0){

-- els velbekomme '-)
Avatar billede hav0k Nybegynder
27. december 2005 - 14:19 #7
Hmm det virker ikke helt? Min første dropdown ser sådan ud:

<select name="minSelect" id="minSelect" onchange="showCountries(this, 'country');" class="box">
    <option>-- Continent --</option>
    <option>Africa</option>
    <option>Asia</option>
    <option>Australia/Oceania</option>
    <option>Europe</option>
    <option>North America</option>
    <option>South America</option>
</select>
        <select name="country" id="country" style="display:none;" onchange="" class="box">
    <option value="">-- Country --<br>
</select>


og den anden:

<select name="minSelect2" id="minSelect2" onchange="showCountries(this, 'school_country');" class="box">
    <option>-- Continent --</option>
    <option>Africa</option>
    <option>Asia</option>
    <option>Australia/Oceania</option>
    <option>Europe</option>
    <option>North America</option>
    <option>South America</option>
</select>
        <select name="school_country" id="school_country" style="display:none;" onchange="" class="box">
    <option value="">-- Country --<br>
</select>

ingen af dem virker nu, og har ændret funktionen som du skrev. Hvad har jeg gjort galt?
Avatar billede roenving Novice
27. december 2005 - 14:22 #8
Har du en form rundt om dine selects ?-)
Avatar billede hav0k Nybegynder
27. december 2005 - 14:25 #9
ja da.. det er den samme form endda :)
Avatar billede roenving Novice
27. december 2005 - 14:28 #10
Hrm, der bør så heller ikke være en var foran sel, altså sådan:

function showCountries(elm,sel){
  sel = elm.form.elements[sel];
  if(elm.selectedIndex==0){
Avatar billede hav0k Nybegynder
27. december 2005 - 14:44 #11
Perfekt. Tusind tak!
Avatar billede roenving Novice
27. december 2005 - 14:44 #12
-- og jeg takker for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester