Avatar billede bongi Novice
02. januar 2014 - 12:12 Der er 11 kommentarer og
1 løsning

Db træk ind i java script

Hej X'er

Koder i ASP

Jeg har en dropdown hvor jeg henter data fra en access db, men leder efter en funktion hvor man kan starte med at skrive og så hopper den selv til "det rigtige" efter hånden som man taster...

når så den rigtige er valgt skal den udfylde 2 andre felter også fra de data der er i db fra samme post...

Nogen der kan hjælpe?
Avatar billede bongi Novice
02. januar 2014 - 12:16 #1
Min kode ser lige nu sådanne ud:

<select name="test">
    <option value="" SELECTED>&nbsp;=&nbsp;Vælg Bruger&nbsp;=&nbsp;</option>
<%
dbConn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db/isg.mdb")
strSQL = "SELECT * FROM users order by Fuldt_navn"
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open strSQL, dbConn, 1, 3

Do While Not rs.EOF
%>
    <option value="<%= Rs("Brugernavn") %>,<%= Rs("Fuldt_navn") %>,<%= Rs("Fuldt_navn") %>"><%= Rs("Fuldt_navn") %></option>
<%
rs.MoveNext
Loop

rs.Close
Set rs = Nothing
%>
</select>
Avatar billede keysersoze Guru
02. januar 2014 - 12:36 #2
Der er flere måder at gøre det på - en meget brugt løsning er http://twitter.github.io/typeahead.js/
Avatar billede bongi Novice
08. januar 2014 - 12:08 #3
Tak for dit svar, men er mere ovre i om dette ikke akn løses med "noget" onchange..??
Avatar billede keysersoze Guru
08. januar 2014 - 13:01 #4
sry, havde ikke set det var en dropdown.

Den første del af dit spørgsmål skal løses med en custom selectboks - der findes masser udført i javascript/jquery så det er bare at finde den der matcher dig bedst (se fx http://jqueryui.com/resources/demos/autocomplete/combobox.html ).

Den sidste del omkring sammenkædningen skal rigtig nok løses med noget onchange og afhængig af datamængden kan det gøres på 2 måder. Ved få data kan du loade alle data på klienten, fx ved at lægge dem i et eller flere javascript-arrays og udfylde dine options ud fra dem ved onchange eller benytte knockoutjs - og ved mange data kan du lave et ajax-kald, fx vha jQuery, ved onchange og returnere de nødvendige data i JSON til binding til dine options.
Avatar billede bongi Novice
08. januar 2014 - 13:36 #5
Havde også kigget på jquery og kan godt få det til at virke.. men kan ikke rigtigt komme igang med onchange delen og få den til at udfylde de andre felter... og hvad er "mange data"?
Avatar billede keysersoze Guru
08. januar 2014 - 14:02 #6
Det findes der ikke noget absolut tal på - det må være en opvejelse fra den ene gang til den anden blandt andet også vurderet ud fra mulig fremtidig datamængde og hvor ofte det må forventes data overhovedet bliver brugt på siden.

Se fx denne for at udfylde en select; http://stackoverflow.com/questions/317095/how-do-i-add-options-to-a-dropdownlist-using-jquery
Avatar billede bongi Novice
08. januar 2014 - 14:16 #7
Kan godt være jeg er ude hvor jeg ikke kan bunde der... men har jo allerede data i dropdaow, problemet er at udfylde de 2 andre felter når der vælges noget (ændres noget) i den
Avatar billede keysersoze Guru
08. januar 2014 - 14:26 #8
hvilke felter er det så og hvad skal de udfyldes med?
Avatar billede bongi Novice
08. januar 2014 - 14:48 #9
2 tekstfelter, smider lige min kode ind:


<select name="test">
    <option value="" SELECTED>&nbsp;=&nbsp;Vælg Bruger&nbsp;=&nbsp;</option>
<%
dbConn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db/db.mdb")
strSQL = "SELECT * FROM users order by Fuldt_navn"
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open strSQL, dbConn, 1, 3

Do While Not rs.EOF
%>
    <option value="<%= Rs("Brugernavn") %>,<%= Rs("Telefon") %>,<%= Rs("Fuldt_navn") %>"><%= Rs("Fuldt_navn") %></option>
<%
rs.MoveNext
Loop

rs.Close
Set rs = Nothing
%>
</select>
<input type="text" name="Telefon" value="" size="25">
<input type="text" name="Brugernavn" value="" size="25">
Avatar billede keysersoze Guru
08. januar 2014 - 23:39 #10
Du kommer kun med halve informationer og det gør det lidt svært men jeg gætter på at du skal bruge telefon og navn ud fra value på din option - prøv noget a la dette

$('select').bind('onchange', function() {
  var temp = $(this).val().split(',');
  $('ditTelefonFelt).val(temp[0]);
  $('ditBrugernavnFelt).val(temp[1]);
});
Avatar billede bongi Novice
09. januar 2014 - 08:48 #11
Ja det er korrekt, jeg har dog ikke nogen ide om hvordan jeg skal sætte det ind i koden,.... men du har fået point, for din ulejlighed..
Avatar billede keysersoze Guru
09. januar 2014 - 09:39 #12
Det er jquery - læg det pakket ind i en document ready i en js-fil du inkluderer og sørg for også at have jquery inkluderet.
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