Avatar billede matthiasmarkussen Nybegynder
29. marts 2006 - 10:46 Der er 5 kommentarer

Automatisk opdatering af formular ved et givent valg

Jeg har ikke den fjerneste forstand på Javascripts, men skulle opdateret nogle felter i en formular alt afhængigt af et valg i en dropdownform. Til dette fandt jeg et script som jeg rettede til efter behov.
Det virker også efterhensigten - men hvad nu hvis jeg ønsker en "multiple" form, altså flere valg? Er det muligt at lave nedenstående således, når der vælges flere varer, opdateres varenumre automatisk adskilt med komma, og pris lægges sammen?

Håber at det er forklaret forståeligt :-)
Ps. Nu ingen kommentarer omkring en skod-kode... Den er fundet, tilrettes - og jeg har ikke megen erfaring med Java! :-P
<SCRIPT LANGUAGE="JavaScript">

function vareChange(){
  var varenr = new Array();
  var pris = new Array();

  varenr[0] = "";
  pris[0] = "";

<%
set RS= Conn.Execute ("SELECT * FROM produkter ORDER BY navn")
OptionString = "<OPTION VALUE=""none"">Vælg her...</OPTION>"
i = 1
Do Until RS.EOF   
    OptionString = OptionString & "<OPTION VALUE=""" & rs("navn") & """>" & rs("navn") & "</OPTION>"
    %>
    varenr[<%=i%>] = "<%=rs("varenr")%>";
    pris[<%=i%>] = "<%=rs("pris")%>";
 
    <%
    i = i +1
    rs.MoveNext
Loop
rs.Close
Conn.close
%>
  if (document.testForm.produkt.selectedIndex > 0)
  {
    document.testForm.varenummer.value = varenr[document.testForm.produkt.selectedIndex];
    document.testForm.varepris.value = pris[document.testForm.produkt.selectedIndex];
       
  }
  else
  {
    document.testForm.varenummer.value = "";
    document.testForm.varepris.transbeloeb.value = "";
 
  }
}

</SCRIPT>
Avatar billede roenving Novice
29. marts 2006 - 19:59 #1
Tjah, jeg kan måske forstå, hvad der sker i et Java-program, hvis jeg ser kildekoden, men ellers kender jeg heller ikke noget til det ...

-- men du skal godt nok stille skarpe spørgsmål, hvis jeg ikke mindst kan give dig en ide om løsningen, hvis det drejer sig om javascript, som altså er noget fuldstændig anderledes, og derfor aldrig bør forkortes sådan, brug hellere f.eks. js !-)

-- og alt kan lade sig gøre i en glas-ovn, men hvordan vil du f.eks. håndtere gentaget valg ?-)
Avatar billede matthiasmarkussen Nybegynder
30. marts 2006 - 08:19 #2
Jeg har en kode som nedenstående her : www.woodpekker.dk/test/test.asp
Det er blot en formular, med et script som er fundet andetsteds.
Vælger man en vare fra listen, udskrives varenr og pris i de resterende 2 felter i formularen. Det virker også fint. Nu har jeg valgt at lave varelisten til "mulitple" valg, og ønsker nu at vælges der flere varer udskrives varenr adskilt med komma, og pris total (priser adderes i feltet).
Jeg ved ikke hvordan jeg skal forklare det skarpere

<html>

<head>

<%
set rs = server.CreateObject("ADODB.Recordset")
set Conn= server.CreateObject("ADODB.Connection")
Conn.Open "Data Source="& server.mappath("stitilmdb.mdb") & ";Provider=Microsoft.Jet.OLEDB.4.0;"
%>
<title></title>
<SCRIPT LANGUAGE="JavaScript">

function vareChange(){
  var varenr = new Array();
  var varepris = new Array();


  varenr[0] = "";
  varepris[0] = "";

<%
set RS= Conn.Execute ("SELECT * FROM produkter ORDER BY navn")
OptionString = "<OPTION VALUE=""none"">Vælg her...</OPTION>"
i = 1
Do Until RS.EOF   
    newOptionString = newOptionString & "<OPTION VALUE=""" & rs("navn") & """>" & rs("navn") & "</OPTION>"
    %>
    varenr[<%=i%>] = "<%=rs("varenr")%>";
    varepris[<%=i%>] = "<%=rs("pris")%>";
 
    <%
    i = i +1
    rs.MoveNext
Loop
rs.Close
Conn.close
%>
  if (document.testForm.maskine.selectedIndex > 0)
  {
    document.testForm.varenummer.value = varenr[document.testForm.maskine.selectedIndex];
    document.testForm.varepris.value = varepris[document.testForm.maskine.selectedIndex] + 50;
;
     
  }
  else
  {
    document.testForm.varenummer.value = "";
    document.testForm.varepris.value = "";

  }
}

</SCRIPT>
</head>

<body onload="vareChange()">

<form method="POST" form name="testForm" action="">



<select name="maskine" size="4" OnChange="vareChange();" multiple><%=newOptionString%></select><br>
Varenr. <input type="text" name="varenummer" size="33" >
Pris <input type="text" name="varepris" size="16">
 

<input type="submit" value="ok" name="B1"></form>


</body>
</html>
Avatar billede matthiasmarkussen Nybegynder
30. marts 2006 - 11:19 #3
fandt iøvrigt frem til hvor jeg havde fået ovenstående kode fra

http://www.eksperten.dk/spm/251094
Avatar billede roenving Novice
31. marts 2006 - 17:06 #4
F.eks.

...

<SCRIPT LANGUAGE="JavaScript">

  var varenr = new Array();
  var varepris = new Array();


  varenr[0] = "";
  varepris[0] = "";

<%
set RS= Conn.Execute ("SELECT * FROM produkter ORDER BY navn")
OptionString = "<OPTION VALUE=""none"">Vælg her...</OPTION>"
i = 1
Do Until RS.EOF   
    newOptionString = newOptionString & "<OPTION VALUE=""" & rs("navn") & """>" & rs("navn") & "</OPTION>"
    %>
    varenr[<%=i%>] = "<%=rs("varenr")%>";
    varepris[<%=i%>] = "<%=rs("pris")%>";
 
    <%
    i = i +1
    rs.MoveNext
Loop
rs.Close
Conn.close
%>
function vareChange(elm){
  var f = elm.form, numre = "", sum = 0;
  if (elm.selectedIndex > 0){
    for(i=1;elm.length>i;i++){
      numre += "," + varenr[i];
      sum += varepris[i];
    }
    if(numre.length>1)
      numre = numre.substring(1);
  }
  document.testForm.varenummer.value = numre;
  document.testForm.varepris.value = sum>0 ? sum : "";
}

</SCRIPT>
</head>

<body onload="vareChange(document.testForm.maskine)">

<form method="POST" form name="testForm" action="">



<select name="maskine" size="4" OnChange="vareChange(this);" multiple><%=newOptionString%></select><br>
Varenr. <input type="text" name="varenummer" size="33" >

...
Avatar billede roenving Novice
31. marts 2006 - 17:07 #5
Uff ...

function vareChange(elm){
  var f = elm.form, numre = "", sum = 0;
  if (elm.selectedIndex > 0){
    for(i=1;elm.length>i;i++){
      if(elm.options[i].selected){
        numre += "," + varenr[i];
        sum += varepris[i];
      }
    }
    if(numre.length>1)
      numre = numre.substring(1);
  }
  f.varenummer.value = numre;
  f.varepris.value = sum>0 ? sum : "";
}
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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