Avatar billede jtp Nybegynder
22. januar 2003 - 00:04 Der er 5 kommentarer og
3 løsninger

Automatisk bynavn ud fra postnr

Jeg har 2 arrays, der henholdsvis indeholder danske postnumre (ArrPost) og bynavne (ArrBynavne). Disse arrays er initieret med værdier fra en database ved hjælp af getRows().

if(!rs_post.EOF){
  var ArrPost = rs_post.getRows();
  ArrPost = ArrPost.toArray();
}
   
if(!rs_bynavn.EOF){
  var ArrBynavn = rs_bynavn.getRows();
  ArrBynavn = ArrBynavn.toArray();
}

Dette sker "serverside".

Det jeg ønsker mig, er at lave en form, hvor brugeren indtaster postnummer i et "input" og derefter bliver bynavnet automatisk indsat i et andet input via de 2 arrays.

Hvordan kan det lade sig gøre?

Jeg har forsøgt noget i stil med dette:

---klip---------------------
<script type="text/javascript" LANGUAGE="javascript">
<!--

  function findBy(postnr) {
    Kode der kontrollerer om findby.postnr.value findes i ArrPost og derefter returnerer værdien fra ArrBynavn med samme index.
  }

//-->
</script>

<form name="findby" action="findby.asp" method="post">
Postnr.: <input type="text" name ="postnr" id="postnr" size="2" onChange="findBy(this.value,1);" maxlength="4">
By : <input type="text" name ="bynavn" id="bynavn" size="30">
</form>
---klip---------------------

Problemet er at jeg tilsyneladende ikke kan komme til at arbejde på de 2 arrays "clientside".
Avatar billede jespernaur Nybegynder
22. januar 2003 - 00:33 #1
Hvis du direkte ønsker at arbejde med de 2 arrays client-side, kommer du til at lade server-side koden generere og sende den JavaScript-kode der skal til, for at få oprettet og initialiseret dem i browseren. Det indbefatter selvsagt den samlede datamængde, men så kan det også lade sig gøre.
Avatar billede jtp Nybegynder
22. januar 2003 - 00:35 #2
Kan du komme med et eksempel?
Avatar billede minijensen1 Nybegynder
22. januar 2003 - 00:36 #3
jeg lavede engang følgende kode:

function zip2city(iZipcode) {
  zipcodes = new Array('2600',    '2605',  '2610',  '2620',      '2625',      '2630',    '2635', '2640',      '2650',    '2660',          '2665',            '2670', '2680',        '2690',      '2730',  '2750',    '2770',  '2860',  '3400');
  cities = new Array(  'Glostrup','Brøndby','Rødovre','Albertslund','Vallensbæk','Taastrup','Ishøj','Hedehusene','Hvidovre','Brøndby Strand','Vallensbæk Strand','Greve','Solrød Strand','Karlslunde','Herlev','Ballerup','Kastrup','Søborg','Køge');
  for (var i=0;i<zipcodes.length;i++) {
    if (iZipcode == zipcodes[i]) {
      document.newuser.city.value = cities[i];
      return;
    }
  }
}

hvis du blot får udskrevet alle postnumre, og bynavne til et Array i Javascript, så er det ligetil :)

Kan desværre ikke hjælpe ret meget mere lige nu, da jeg skal tidligt op i morgen :/

Sov godt når I kommer så langt :)
Avatar billede jespernaur Nybegynder
22. januar 2003 - 00:45 #4
Der var eksemplet - hvad skal jeg sige?
Avatar billede jtp Nybegynder
22. januar 2003 - 00:51 #5
Jeg kigger lige på det (formodentlig først i morgen eftermiddag).

Tak for hjælpen, so far :o)
Avatar billede olebole Juniormester
22. januar 2003 - 02:24 #6
<ole>

Begge løsninger bliver temmelig tunge. Når man kommer op på JS-arrays i den størrelse, er blot et mellemrum eller bogstav i hvert element af stor betydning for størrelsen af koden.

Spørgsmålet var oppe for en tid siden, hvor det blev dikuteret en del. Du kan læse tråden her:
  http://www.eksperten.dk/spm/187815
At data fra en database, hvergang en bruger request'er siden ville være helt hen i vejret ... ikke mindst, hvis der er tale om en Access-database. Det er under alle omstændigheder langt mere effektivt at basere løsningen på en statisk fil, som omtalt i ovennævnte tråd.

Det omtalte site er ikke oppe for tiden, men filen kan downloades på denne adresse:
  http://tjenester.dk/x-codes.dk/eksperten/postnumre/dk_pns.js
/mvh
</bole>
Avatar billede olebole Juniormester
22. januar 2003 - 02:40 #7
HTML'en kan du få her - taget fra en løsning, jeg selv lavede på et tidspunkt:

<script type="text/JavaScript" src="dk_pns.js"></script>
<script type="text/JavaScript">
function setAddr(inp, f) {
    var addr = eval('pn.p'+inp.value);
    if ((!addr || addr==null || addr=="undefined") && inp.value!="") {
        alert("Forkert postnummer");
        inp.select();
        return false;
    } else if (inp.value!="") {
        f.by_navn.value = addr;
    }
}
</script>

<form>
<table>
<tr>
    <td>Postnr:</td>
    <td>Bynavn:</td>
</tr>
<tr>
    <td><input type="text" name="postnr" style="width:40px;"
        onblur="setAddr(this, this.form);" value=""></td>
    <td><input type="text" name="by_navn" value=""></td>
</tr>
</table>
</form>

/mvh
Avatar billede jtp Nybegynder
22. januar 2003 - 19:19 #8
Jeg har fordelt pointene i mellem jer :o)

Til interesserede kan jer oplyse, at jeg valgte at gøre brug af løsningen fra oleboles link: http://www.eksperten.dk/spm/187815
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