Avatar billede clavo Nybegynder
05. juli 2001 - 09:06 Der er 11 kommentarer og
1 løsning

Opdatering af Combobox

Jeg er ved at lave en hjemmeside, hvor vores kunder kan opdatere deres informationer. Når der vælges postnr skal bynavnet opdateres automatisk. Jeg har prøvet 100 forskellige ting, men jeg synes ikke rigtig, at jeg har fundet den optimale løsning. Bynavnet skal stå som almindelig tekst og ikke som et inputfelt. Det skal helst ske uden at siden skal kalde sig selv. Jeg har fedtet lidt med layer, hvor jeg vil eksekvere et asp-script hvis resultat vises i layeret (bynavnsfeltet). Jeg kalder asp-scriptet med en querystring, der indeholder postnummeret.
Nogen gode forslag?
Avatar billede tknudsen Nybegynder
05. juli 2001 - 09:12 #1
du kunne fylde et javascript array op fra serveren - og så lave en funktion der henter bynavnet på onchange eventen fra comboboxen.

selve bynavnet kan du putte i et <div> tag og så ændre inholdet via innerHTML
Avatar billede clavo Nybegynder
05. juli 2001 - 09:19 #2
Det var såden noget lignende, jeg havde tænkt mig. Har du mulighed for at skrive lidt kode?
Avatar billede tknudsen Nybegynder
05. juli 2001 - 09:20 #3
i asp skal du gøre følgende:

<head>

<script language=\"javascript\">

function cityHandler()
{
  // membmer variables
  this.cityInfo = new Array();
  this.infoCount = 0;

  // membmer functions
  this.addCity = addInfo;
  this.getCityName = getCityName;
}

function cityType()
{
  this.cityName = \'\';
  this.poBox = \'\';
}

function addInfo(poBox,cityName)
{
  this.cityInfo[this.infoCount] = new cityType();
  this.cityInfo[this.infoCount].cityName = cityName;
  this.cityInfo[this.infoCount++].poBox = poBox;

}

function getCityName(poBox)
{
  var i;
  var result = \'\';

  for(i=0;i<this.infoCount;i++)
    if(this.cityInfo[i].poBox==poBox)
    {
      result = this.cityInfo[i].cityName;
      break;
    }
  return result;
}

var city = new cityHandler();
<%
  for i = 1 to antal_byer
  response.write \"city.addInfo(\'\"+byens_postbox+\"\',\'\"+byens_navn+\"\');\"
  next
%>

</script>
Avatar billede clavo Nybegynder
05. juli 2001 - 09:22 #4
Jeg er med på det omkring innerHTML, men jeg vil gerne se javascriptkoden, der henter bynavnet (ved onChange) ud fra postnummeret.
Avatar billede clavo Nybegynder
05. juli 2001 - 09:25 #5
Man kunne måske også eksekverer en ekstern aspfil (response.execute) der returnerer en session variabel med bynavnet, der så skrives med innerHTML
Avatar billede tknudsen Nybegynder
05. juli 2001 - 09:25 #6
<script>

function getName()
{
  var cbObj = document.getElementById(\"PoBox\")
  document.getElementById(\"CityName\").innerHTML = city.getCityName(cbObj.value);
}

</script>

<html>

<select id=\"PoBox\" onChange=\"getName()\">
<%
  for i = 1 to antal_byer
    response.write \"<option value=\"\"\"+byens_postbox+\"\"\">\"+byens_postbox+\"</option>\"
%>
</select>

<div id=\"CityName\">
</div>
Avatar billede tknudsen Nybegynder
05. juli 2001 - 09:30 #7
jeg kender ikke den response.execute - endnu  - læser...

;-)
Avatar billede tknudsen Nybegynder
05. juli 2001 - 09:37 #8
pointen er at når du ikke vil reloade siden - feks som ved en submit - for at finde by navnet - bliver du nød til at ha disse data (bynavn,postnummer) liggende på klienten, som så selv kan finde aktuelle data.
Avatar billede tknudsen Nybegynder
05. juli 2001 - 09:38 #9
btw - der mangler i \"next\" i opfyldningen af combo boxen
Avatar billede clavo Nybegynder
05. juli 2001 - 09:42 #10
Ok! Det virker.
Avatar billede clavo Nybegynder
05. juli 2001 - 10:04 #11
Nå jeg valgte at ændre <option value..> til at indeholde bynavnet, og så ændre aspscriptet der opdaterer databasen. Så kan jeg nøjes med en modificeret getName.
Avatar billede tknudsen Nybegynder
05. juli 2001 - 10:12 #12
oh ja - det var faktisk smartere...en hel del - så slipper du får den cityHandler() - men princippet er ret godt hvis der er tale om strukturer, der indeholder mere end 2 felter i hver record - sføli kan man lave noget med at <option value...> indeholder en csv streng som man så spiltter med javascript...og og og...

tak for nu
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
Kurser inden for grundlæggende programmering

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