Avatar billede svjensen Nybegynder
26. maj 2003 - 21:54 Der er 22 kommentarer og
2 løsninger

Åbne link fra dropdown/combobox.

Jeg har sorteret mine links i nogle forskellige kategorier. Disse kategorier loader jeg ind i en combobox, og når jeg vælger en kategori reloader siden og der vises endnu en combobox med de enkelte links i den pågældende kategori.
Mit problem er at få åbnet det link jeg vælger i den anden combobox. Nedenstående kode loader i samme vindue, med følgende i adressefeltet:

http://svjensen/main.asp#http://www.eksperten.dk#

Her kommer scriptet:
-----------------------------------
<h3 align="center">Find det ønskede link ved at vælge en kategori i den første boks.</h3>
<p align="center">

<form action="main.asp" target="main" method="post" name="form1">
<%
kat = Request.Form("ddkat")

strSQL = "SELECT linkkat_id, linkkategori "
strSQL = strSQL & "FROM linkkat "
strSQL = strSQL & "ORDER BY linkkategori ASC"
set rs = conn.execute(strSQL)

Response.Write "<select name=ddkat size=1 onchange='document.form1.submit()'>"
Response.Write "<option value=0>Vælg kategori</option>"
           
Do While Not rs.EOF
    Response.Write "<option "
    Response.write "value=" & rs("linkkat_id") & ">" & rs("linkkategori") & "</option>"
    rs.MoveNext
Loop
Response.Write "</select>"
Response.Write "</form>"
'Rydder op
rs.close
set rs = nothing

If kat <> "" Then
    strSQL1 = "SELECT link, link_tekst "
    strSQL1 = strSQL1 & "FROM link "
    strSQL1 = strSQL1 & "WHERE link.linkkat_id = " & kat & " "
    strSQL1 = strSQL1 & "ORDER BY sortering"
    set rs1 = conn.execute(strSQL1)
%>
    <form action="_derived/nortbots.htm" onSubmit="location.href='_derived/nortbots.htm';return false;" target="_blank" WEBBOT-onSubmit webbot-action="--WEBBOT-SELF--">
    <select name=ddlink size=1 onchange="window.open(this.options[this.selectedIndex].value,'_top')">

    <option value=0>Vælg link</option>
    <%
    Do While Not rs1.EOF
        Response.Write "<option value=" & rs1("link") & ">" & rs1("link_tekst") & "</option>"
        rs1.MoveNext
    Loop
    Response.Write "</select>"
    rs1.Close
    set rs1 = nothing
    Response.Write "</form>"
Else

End if
Response.Write "</p>"

%>
Avatar billede svjensen Nybegynder
26. maj 2003 - 22:00 #1
Jeg kan tilføje at grunden til at '<form>' og '<select>' ser ud som de gør2. gang, er at jeg har klippet det ind fra en side, hvor det virkede. Forskellen er blot at dengang var der en dropdown for hver kategori.
Avatar billede eagleeye Praktikant
26. maj 2003 - 22:03 #2
Prøv at bruger _blank istedet for _top. _top åbner i samme vindue, hvorimod _blank lavet et nyt.:

<select name=ddlink size=1 onchange="window.open(this.options[this.selectedIndex].value,'_blank')">
Avatar billede svjensen Nybegynder
26. maj 2003 - 22:10 #3
Den giver samme problem, nu blot i et nyt vindue.
Kan det skyldes, at de to forme på en eller anden måde generer hinanden?
Avatar billede eagleeye Praktikant
26. maj 2003 - 22:13 #4
Umiddelbart behøver du ikke en form til <select>'en nr. 2 som indeholder linksne, da den selv loader linket i onchange.
Avatar billede svjensen Nybegynder
26. maj 2003 - 22:17 #5
Det hjalp ikke at fjerne formen.
Avatar billede roenving Novice
26. maj 2003 - 22:18 #6
Jeg ville nok også prøve at fjerne formen, men hvad med bare at give vinduet et navn, så den ikke er afhængig af det vindue, du kommer fra:

    <select name=ddlink size=1 onchange="window.open(this.options[this.selectedIndex].value,'Linkvindue')">
Avatar billede eagleeye Praktikant
26. maj 2003 - 22:26 #7
Arh..

Det er det så ikke fordi der ikke er http:// foran det link som er i databasen. Prøv at sætte http:// foran og brug:
<select name=ddlink size=1 onchange="window.open(this.options[this.selectedIndex].value,'_blank');">
Avatar billede svjensen Nybegynder
26. maj 2003 - 22:29 #8
Det gjorde ingen forskel at skrive 'linkvindue' i stedet.

Jeg har ikke noget særligt ønske om at bruge den nuværende opbygning, så hvis I har et andet/bedre forslag, så er jeg lutter øre (øjne)
Avatar billede svjensen Nybegynder
26. maj 2003 - 22:31 #9
der er http:// foran linket.

Gør det nogen forskel at mit script kører i en frame?
Avatar billede roenving Novice
26. maj 2003 - 22:35 #10
Window.open skulle gøre hvad den siger: åbne et nyt vindue uanset hvor den kommer fra ... prøv lige at:

    <select name=ddlink size=1 onchange="alert(this.options[this.selectedIndex].value)">
Avatar billede svjensen Nybegynder
26. maj 2003 - 22:40 #11
Det giver mig en messagebox hvori der står '[object]'
Avatar billede roenving Novice
26. maj 2003 - 22:41 #12
Hvordan ser det ud, når du kigger i kildekoden ?-)
Avatar billede svjensen Nybegynder
26. maj 2003 - 22:45 #13
Kildekoden ser ud som følger:

    <select name=ddlink size=1 onchange="alert(window.open(this.options[this.selectedIndex].value))">

    <option value=0>Vælg link</option>
    <option value=#http://www.eksperten.dk#>Eksperten.dk</option></select></p>   

Jeg har i øvrigt prøvet at fjerne den første dropdownbox for at eliminere den fejlmulighed, men det ændrer ikke ved noget. Det giver stadig problemet
Avatar billede eagleeye Praktikant
26. maj 2003 - 22:47 #14
Det fordi der er # omkring, det skal der ikke være.
Avatar billede roenving Novice
26. maj 2003 - 22:48 #15
Så skal du sørge for at fjerne de der #'er og erstatte med ""

-- et #-mark er et link til inde i en side, så derfor tager den selvfølgelig udgangspunkt i en side ...
Avatar billede svjensen Nybegynder
26. maj 2003 - 22:50 #16
Og hvordan fjerner jeg så lige dem? De er ikke med i det link der er i databasen, og som I kan se øverst, så er de heller ikke med i min kode.
Avatar billede roenving Novice
26. maj 2003 - 22:50 #17
Hvis du godt vil lave hop inde i en side, laver man nemlig sådan noget:

<a name="top"></a>


<a href="#top">Tilbage til toppen</a>
Avatar billede roenving Novice
26. maj 2003 - 22:51 #18
Prøv med:

Response.Write "<option value='" & rs1("link") & "'>" & rs1("link_tekst") & "</option>"
Avatar billede eagleeye Praktikant
26. maj 2003 - 22:51 #19
Jeg kan ikke lige se hvor det kommer fra i denne linje:
Response.Write "<option value=" & rs1("link") & ">" & rs1("link_tekst") & "</option>"

Er kolonnen defineret som hyper-link? Så kan du bruge typen text istedet for.

Eller så prøv med replace:

Response.Write "<option value=" & replace(rs1("link"),"#","") & ">" & rs1("link_tekst") & "</option>"
Avatar billede roenving Novice
26. maj 2003 - 22:53 #20
-- men uanset om du er nødt til at replace, så sæt de der '' på omkring valuen
Avatar billede svjensen Nybegynder
26. maj 2003 - 22:55 #21
Problemet er løst. Jeg ændrede kolonne til tekst, og vupti... så kom der et # frem først og sidst, som jeg kunne slette, og nu virker det.

roenving -> Hvis du vil dele med eagleeye, så kast lige et svar.

Tak for hjælpe til jer begge.

Søren
Avatar billede svjensen Nybegynder
26. maj 2003 - 22:59 #22
Jeg logger af for idag.
Jeg kigger in digen i morgen og giver point.
Avatar billede roenving Novice
26. maj 2003 - 23:01 #23
bueno ... '-)
Avatar billede roenving Novice
27. maj 2003 - 14:19 #24
Takker for points ;~}
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