Avatar billede mr.gessle Nybegynder
06. august 2002 - 14:18 Der er 4 kommentarer

At bruge onChange fra en <SELECT> i et ASP-dokument?!?

Hvorfor får jeg en syntaksfejl med nedenstående?
Hvordan skal det struktureres og hvilken syntaks er gældende når jeg blander asp, javascript og dhtml?!?

Her kalder jeg det fra .asp dokument:

<select name="fabrikant" onChange="hentCPUer();">
        <option value="Intel">Intel </option>
        <option value="AMD">AMD</option>
      </select>

Her forsøger jeg at fange eventen. Det lykkedes men får at vide, at et objekt var ventet:
<%



function hentCPUer()
{
  conn = createDBConnection();
  var sql="SELECT Processor FROM Basis_pc WHERE Basis_pc.Fabrikant='";
  sql    = + sql + fabrikant.value +"';"
  res    = conn.execute(sql);
  Response.write("<select name=processor id=processor>");
  while(!res.EOF)
  {
    var cpu = res.Fields("Processor");
    Response.write("<option value="+cpu+"> "+cpu+" </option>");
    res.moveNext();

  }

  if(res.EOF)
  Response.write("</select></td>");
}
%>

Jeg bruger endvidere et SSI hvori jeg har en enkelt JScript funktion til at connecte til db.
<!-- #include file="dbConnectionDeltaPC.js" -->


Men eventen giver kodefejl.
Hvad er der galt?

/mvh mr.gessle
Avatar billede kichian Nybegynder
06. august 2002 - 14:28 #1
Tja... Du kan ikke kalde en ASP-metode direkte fra dit klientscript.

Når man vælger en CPU, er du nødt til at kalde siden igen med en parameter som angiver dit valg. Evt. submitte den form som din select-boks ligger i.
Avatar billede a1a1 Novice
06. august 2002 - 14:30 #2
ja, selvfølgelig gør den det....;o)

din onchange event kan kun kalde et javascript (på klienten), og ikke jscript (på serveren)

du kan gøre noget ala

function hentCPU() {
document.formnavn.submit();
}

i dig serverside jscript kan du så checke om der er valgt en cputype eller ej
ala

if (Request.Form("processor") != "") {
conn = createDBConnection();
  var sql="SELECT Processor FROM Basis_pc WHERE Basis_pc.Fabrikant='";
  sql    = + sql + fabrikant.value +"';"
  res    = conn.execute(sql);
  Response.write("<select name=processor id=processor>");
  while(!res.EOF)
  {
    var cpu = res.Fields("Processor");
    Response.write("<option value="+cpu+"> "+cpu+" </option>");
    res.moveNext();

  }

  if(res.EOF)
  Response.write("</select></td>");

}

(jeg skriver ikke jscript normalt, men vbscript så muligvis min if sætning ikke dur (if (request.Form("processor") != "") )

;)
Avatar billede a1a1 Novice
06. august 2002 - 14:31 #3
du skal lige huske værdien

if (Request.Form("processor") != "") {
conn = createDBConnection();
  var sql="SELECT Processor FROM Basis_pc WHERE Basis_pc.Fabrikant='";
  sql    = + sql + Request.Form("processor")  +"';"
  res    = conn.execute(sql);
  Response.write("<select name=processor id=processor>");
  while(!res.EOF)
  {
    var cpu = res.Fields("Processor");
    Response.write("<option value="+cpu+"> "+cpu+" </option>");
    res.moveNext();

  }

  if(res.EOF)
  Response.write("</select></td>");

}
Avatar billede a1a1 Novice
12. august 2002 - 01:02 #4
?
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