Avatar billede tma Juniormester
20. juni 2016 - 09:42 Der er 6 kommentarer

Kald af funktion fra OnChange-event

jeg kan ikke få et asp-dokument til at virke. Jeg fylder en komboboks med data fra en databasen. Jeg vil gerne have noget til at ske, når jeg vælger et element fra komboboksen. Jeg kan af en eller anden årsag ikke få kaldet igennem til funktionen/sub'en.
Jeg håbede jeg kunne uploade en fil, men her er selve kildekoden:

<html><title>TEST</title><head>
<%
sub vbproc(num1,num2)
    response.write(num1*num2)
end sub

function Test()
    response.write "alert('TEST')"
end function


IF session("Login") = "JA" then
    dim MyConn, SQL_query, RS, MyIden, AccConn, AccRS
   
   
    set AccConn = Server.CreateObject("ADODB.Connection")
   
    Set MyConn = Server.CreateObject("ADODB.Connection")
    MyConn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=xxxx;UID=xxxx;PWD=xxxx;DATABASE=xxxx"
   
    response.write "<table width='100%' border='1'><tr><td width='45%'align='Center'>"

    sql_query = "Select * from tabelX order by feltX"
    SET RS = MyConn.Execute(SQL_query)
%>
    <SELECT id="selectORG" onchange="vbproc(3, 3);">
    <option value=0>Vælg fra listen
<%
    while not rs.eof
        MyIden = "<Option value='" & rs("ID") & "'>" & RS("xxxx")
        response.write MyIden
        rs.movenext
    wend
    response.write "</select></td><td align='Center' width='10%'></td><td align='Center' width='45%'>"
   
MyConn.Close
else
    response.redirect("login.asp")
END IF
%>
</body></html>
Avatar billede keysersoze Guru
20. juni 2016 - 10:01 #1
onchange er en javascript-event, altså noget, der sker på klienten, mens vbproc er en server funktion - så du er nødt til at lave vbproc om til en javascript-funktion eller, hvis du har behov for at få serverfunktionalitet ind over, en ajax-funktion.
Avatar billede tma Juniormester
20. juni 2016 - 10:11 #2
Hmm, måske jeg er på for dybt vand...
I bund og grund går mit problem ud på, at jeg har 2 combobokse, som egentlig repræsenterer en "1-til-mange" relation i en database. Når brugeren vælger noget fra combobox1, skal valget bruges til udvælgelse af, hvad der skal vises i combobox2. Jeg havde håbet, at jeg ved at kalde en function, kunne sætte den rette sql-streng op. Hvis der lige er en nem løsning hertil, vil jeg da være taknemmelig - ellers må jeg blot lukke spørgsmålet igen.
Avatar billede keysersoze Guru
20. juni 2016 - 10:39 #3
nem er et vidt begreb :) Men du kan i hvert fald ikke på den måde kalde ASP fra klienten.

Det nok letteste du kan gøre er, at ved valg i combobox 1 så poster du siden til sig selv og bruger value til at udfylde combobox 2.
Avatar billede tma Juniormester
20. juni 2016 - 11:02 #4
Ja, det var faktisk også sådan jeg begyndte, men det generede mig bare, at jeg efter at have postet, blev valgte i boksen sat tilbage til udgangspunktet.
Avatar billede Rune1983 Ekspert
20. juni 2016 - 11:13 #5
Med javascript kan du lave det således. Se eksempel nedenfor.
Hvis du skal hente option valg fra en database kan du sætte to løkker til at genererer javascriptkoden som klienten så loader. (Har testet koden af. Beklager det er PHP kode. Håber stadig mit eksempel kan hjælpe.)

<form name="MyFormComboboxEksempel" enctype="multipart/form-data" method="post" action="">
            <select id="ComboBox1" name="ComboBox1" onchange="setOptions(document.MyFormComboboxEksempel.ComboBox1.options[document.MyFormComboboxEksempel.ComboBox1.selectedIndex].value);">
                <option value="">Vælg</option>
                <option value="Personbiler">Personbiler</option>
                    <?php
                    //////////////////////////////////////
                    // Ny option i combobox1       
                    $JavascriptInput = "$JavascriptInput
                                        if(chosen == 'Personbiler'){
                                            selbox.options[selbox.options.length] = new
                                            Option('Vælg','');
                                        ";
                    $JavascriptInput = "$JavascriptInput
                                            selbox.options[selbox.options.length] = new
                                            Option('Personbiler 1','Personbiler 1');";
                    $JavascriptInput = "$JavascriptInput
                                            selbox.options[selbox.options.length] = new
                                            Option('Personbiler 2','Personbiler 2');";
                    $JavascriptInput = "$JavascriptInput
                                            selbox.options[selbox.options.length] = new
                                            Option('Personbiler 3','Personbiler 3');";
                    $JavascriptInput = "$JavascriptInput
                                            selbox.options[selbox.options.length] = new
                                            Option('Personbiler 4','Personbiler 4');";
                    $JavascriptInput = "$JavascriptInput
                                        }";
                    //////////////////////////////////////
                    //////////////////////////////////////
                    // Ny option i combobox1
                    ?>
                    <option value="Lastbiler">Lastbiler</option>
                    <?php
                    $JavascriptInput = "$JavascriptInput
                                        if(chosen == 'Lastbiler'){
                                            selbox.options[selbox.options.length] = new
                                            Option('Vælg','');
                                        ";
                    $JavascriptInput = "$JavascriptInput
                                            selbox.options[selbox.options.length] = new
                                            Option('Lastbil 1','Lastbil 1');";
                    $JavascriptInput = "$JavascriptInput
                                            selbox.options[selbox.options.length] = new
                                            Option('Lastbil 2','Lastbil 2');";
                    $JavascriptInput = "$JavascriptInput
                                            selbox.options[selbox.options.length] = new
                                            Option('Lastbil 3','Lastbil 3');";
                    $JavascriptInput = "$JavascriptInput
                                            selbox.options[selbox.options.length] = new
                                            Option('Lastbil 4','Lastbil 4');";
                    $JavascriptInput = "$JavascriptInput
                                            selbox.options[selbox.options.length] = new
                                            Option('Lastbil 5','Lastbil 5');";
                    $JavascriptInput = "$JavascriptInput
                                            selbox.options[selbox.options.length] = new
                                            Option('Lastbil 6','Lastbil 6');";
                    $JavascriptInput = "$JavascriptInput
                                        }";
                    //////////////////////////////////////
                    ?>
            </select>
            <script type="text/javascript">
                function setOptions(chosen) {
                    var selbox = document.MyFormComboboxEksempel.ComboBox2;
                   
                    selbox.options.length = 0;
                    if (chosen == " ") {
                      selbox.options[selbox.options.length] = new Option('Vælg',' ');
                    }
                    <?php
                    print "$JavascriptInput";
                    ?>
                }
            </script>
            <select id="ComboBox2" name="ComboBox2"></select>
            </form>
Avatar billede keysersoze Guru
20. juni 2016 - 11:51 #6
Du skal selv sørge for at huske state - dvs fx sætte value på input-felter og selected på options.
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

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