Avatar billede lgadex Nybegynder
22. maj 2002 - 14:57 Der er 5 kommentarer og
2 løsninger

autoudfyld 2 input felter ud fra valgt værdi i dropdown liste

Hej
Jeg har en form der henter værdier fra en tabel i en database ind i en dropdown liste ved hjælp af ASP. Når jeg vælger et element i listen skal der fra tabellen hentes yderligere værdier ind i 2 input felter.
Indtil der bliver valgt noget i listen skal de to input felter være skjulte.
I min select sætning har jeg indsat ID'et fra tabellen som value og mener at jeg ud fra dette ID kan hente resten af feltnavnene fra tabellen. Jeg har bare lidt svært ved at finde ud af hvordan.
Hermed min kode - hvori der kun er medtaget det nødvendige for at få et overblik over problemet:
-----------
<script language="JavaScript">
function mediaChange(){ 
        document.customerDataForm.cp.value = ??;
        document.customerDataForm.rho.value = ??;
}
</script>

<%
set RSMedia = DatabaseConnection.Execute ("Select * From Media")
Do Until RSMedia.EOF   
    OptionStringMedia = OptionStringMedia & "<OPTION VALUE=""" & RSMedia("MediaID") & """>" & RSMedia("Media") & "</OPTION>"
    RSMedia.MoveNext
Loop
%>
<td><select name="media" size="1"  style="width:180px" OnChange="mediaChange();"><% = OptionStringMedia %></select></td>   
<td><input type="text" name="cp" size="16" ></td>
<td><input type="text" name="rho" size="16" ></td>

------------
Media tabellen består af felterne: MediaID, Media; Cp og Rho

Jeg har en ide om at det skal gøres ved hjælp af onChange og et javascript, som det også fremgår af koden.

Jeg vil gerne vide hvordan jeg får de korrekte værdier ind i mine input felter samt hvordan jeg får inputfelterne til at være usynlige, indtil man vælger en anden værdi end default-værdien i dropdownboksen.
//Lis\\
Avatar billede a1a1 Novice
22. maj 2002 - 15:34 #1
hvor kommer de 2 værdier fra (er det noget der skal hentes i db?)
Avatar billede lgadex Nybegynder
22. maj 2002 - 15:38 #2
Ja det er værdierne "Cp" og "Rho" fra samme tabel som listen bliver hentet fra.
Avatar billede a1a1 Novice
22. maj 2002 - 15:49 #3
så jeg da jeg nærlæste (7. gang :) )

her er noget der burde du...:

<form name="something">
<%
set RSMedia = DatabaseConnection.Execute ("Select mediaID, media From Media")
Do Until RSMedia.EOF   
    OptionStringMedia = OptionStringMedia & "<OPTION VALUE=""" & RSMedia("MediaID") & """>" & RSMedia("Media") & "</OPTION>"
    RSMedia.MoveNext
Loop
%>
<td><select name="media" size="1"  style="width:180px" OnChange="document.something.submit();">
<option value="0">Vælg noget :)
<% = OptionStringMedia %></select></td>
<%
selectedID = Request("media")
If media <> "0" Then
Set Rs2 = DatabaseConnection.Execute ("Select cp, rho From Media WHERE mediaID = " & media & "")
If Not Rs2.EOF Then
%>
<td><input type="text" name="cp" size="16" value="<%=Rs2(0)%>" /></td>
<td><input type="text" name="rho" size="16" value="<%=Rs2(1)%>" /></td>
<%
End If ' Rs2

End If
%>
</form>

Du kunne sikkert godt tænke dig at den ikke skiftede side ???

Det er self. muligt men så er det noget med at opbygge en javascript array med alle dine værdier i...
og så bruge den array til at udskrive din selectbox (pas på javascript understøtter ikke "dynamiske" arrays, over et vist antal elementer (så skal antal elementer defineres først..) )
og så kan du jo så have en onchange funktion der tar de "resterende" værdier fra arrayen..
ala
function skift() {
document.something.cp.value = DINARRAY[3,document.something.media.selectedIndex]
}
Avatar billede a1a1 Novice
22. maj 2002 - 15:52 #4
du kan jo så have dine inputboxe (incl. td osv.) i et div layer som du viser i funktionen skift

den sidste methode kræver noget mere (skal det være X-browser (eller kun IE?) )
Avatar billede lgadex Nybegynder
22. maj 2002 - 15:59 #5
jeg kigger på dit svar i aften eller i morgen formiddag.
Det behøver kun at virke i IE 5.0 og op, da det ikke skal være tilgængelig for alle og der vil blive opsat systemkrav for brugerne.
Avatar billede eagleeye Praktikant
22. maj 2002 - 17:30 #6
Så kan jeg da vise hvordan man kan lave det med JavaScript, fordelen er så at siden ikke skal loades hver gang man vælger noget i selec'en, den skjulte de to input felter hvis der ikke er valgt noget:


<%
set RSMedia = server.CreateObject("ADODB.Recordset")
set DatabaseConnection = server.CreateObject("ADODB.Connection")
DatabaseConnection.Open "Data Source="& server.mappath("db10.mdb") & ";Provider=Microsoft.Jet.OLEDB.4.0;"
%>
<HTML>
<head>
<SCRIPT LANGUAGE="JavaScript">
function mediaChange(){
  var kunder = new Array();
  kunder[0] = new Array("","");
<%
set RSMedia = DatabaseConnection.Execute ("Select * From Media")
OptionStringMedia = "<OPTION VALUE=""none"">Vælg her...</OPTION>"
i = 1
Do Until RSMedia.EOF   
    OptionStringMedia = OptionStringMedia & "<OPTION VALUE=""" & RSMedia("MediaID") & """>" & RSMedia("Media") & "</OPTION>"
    %>
    kunder[<%=i%>] = new Array("<%=RSMedia("cp")%>","<%=RSMedia("rho")%>");
    <%
    i = i +1
    RSMedia.MoveNext
Loop
%>
  if (document.customerDataForm.media.selectedIndex > 0)
  {
    document.customerDataForm.cp.value = kunder[document.customerDataForm.media.selectedIndex][0];
    document.customerDataForm.rho.value = kunder[document.customerDataForm.media.selectedIndex][1];
    document.customerDataForm.cp.style.visibility = "visible";
    document.customerDataForm.rho.style.visibility = "visible";
  }
  else
  {
    document.customerDataForm.cp.style.visibility = "hidden";
    document.customerDataForm.rho.style.visibility = "hidden";
  }
}
</SCRIPT>
</head>
<body onload="mediaChange()"><center>

<form name="customerDataForm">
<table>
<tr>
<td><select name="media" size="1"  style="width:180px" OnChange="mediaChange();"><%= OptionStringMedia %></select></td>
<td><input type="text" name="cp" size="16" ></td>
<td><input type="text" name="rho" size="16" ></td>
</tr>
</table>
</form>

<%
DatabaseConnection.close
%>
</center>
</body>
</HTML>
Avatar billede lgadex Nybegynder
23. maj 2002 - 09:55 #7
Tak for hjælpen til jer begge to.
Nu har jeg afprøvet begge forslag - det første fra a1 virkede for så vidt fint nok, men jeg var lidt ked af submit-funktionen og når siden reloadede forsvandt den værdi jeg havde valgt i dropdown-listen. I stedet for kom listen på ny frem fra DB med den værdi, som normalt var default.
Derimod virkede eagleeye's forslag på den måde jeg oprindeligt havde tænkt det skulle være. Samtidig var der også koden til at vise og skjule input-felterne uden at skulle i gang med layers.
Jeg håber I begge er tilfredse med pointfordelingen. Jeg takker i alle tilfælde for god og hurtig hjælp.
//Lis
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