Avatar billede klgn Nybegynder
30. marts 2007 - 09:33 Der er 4 kommentarer og
1 løsning

Opdatering af <input text> når der ændres i <select>

Hej

Jeg sidder og roder med noget ordreformular-fejl. Jeg udtrækker varenummer, varenavn og prisen fra en db via php, og laver herefter en <select>, hvor jeg lister alle de varer op, man kan bestille. Denne proces er gentaget flere gange, da det jo skal være muligt at bestille flere varer.

Min ide er så, at når der vælges et punkt i selectboksen, så bliver prisfeltet automagisk opdateret med den tilhørende pris til varen.

Jeg er klar over, det er noget onchange-hallo jeg skal lege med, men derefter er jeg ikke klar over, hvad jeg skal, og hvordan det skal gøres.
Jeg har pastet lidt kode herunder, så I kan se, hvad jeg laver:

<table border="0">
    <th style="border: 0;">Varenavn</th><th style="border: 0;">Antal</th><th style="border: 0;">Pris</th>
    <?php
    for ($i=1;$i<4;$i++) {
    ?>
    <tr><td><select name="varer<?php echo $i; ?>">
        <option value="0" selected>Vælg vare fra listen</option>
        <?php
                                       
        $udtraek = mysql_query("SELECT * FROM table")or die(mysql_error());
        while ($row = mysql_fetch_array($udtraek)) {
            echo "<option value=\"".$row[Varenr]."\">".$row[Varetype]."</option>";
        }
        ?>
        </select></td>
        <td><input type="text" size="4" name="antal" /></td>
        <td><input type="text" size="8" name="pris" /></td></tr>
    <?php } ?>
</table>
Avatar billede roenving Novice
30. marts 2007 - 11:56 #1
-- så må du lægge de oplysninger et sted, hvor man kan finde dem, f.eks. som en del af value på options:

            echo "<option value=\"".$row[Varenr]."#".$row["Pris"]."\">".$row[Varetype]."</option>";

-- og f.eks. bruge sådan en her:

<select name="varer<?php echo $i; ?>" onchange="visPris(this);">

<script type="txt/javascript">
function visPris(sel){
  var par = getParent(sel,"tr");
  var pris = sel.value.split("#")[1];
  var inps = par.getElementsByTagName("input");
  for(i=0,im=inps.length;im>i;i++){
    if(inps[i].name == "pris"){
      inps[i].setAttribute("value",pris);
      break;
    }
  }
}
function getParent(elm,tN){
  var parElm = elm.parentNode;
  while(parElm.tagName.toLowerCase() != tN.toLowerCase())
    parElm = parElm.parentNode;
  return parElm;
}
</script>

-- så skulle den ikke problemer med forskellige rækker !-)
Avatar billede klgn Nybegynder
30. marts 2007 - 14:54 #2
Super, Roenving - mange tak. Eneste lille ting, jeg måtte ændre <script type="txt/javascript"> til <script language="javascript"> for at det virkede, men det gør vel ingen forskel?

Smid et svar, og der er points.

Mange tak for hjælpen!
Avatar billede roenving Novice
30. marts 2007 - 15:05 #3
-- en tavetosse, undskyld jeg ikke checkede ...

-- og typen skal være: type="text/javascript", og da type-attributten er obligatorisk i et script-element, bør du bruge den i stedet for language-tingen !-)

Velbekomme '-)
Avatar billede klgn Nybegynder
30. marts 2007 - 16:45 #4
Jamen så gør jeg da bare det - det virkede også, da jeg rettede din stavebøf:)
Avatar billede roenving Novice
30. marts 2007 - 23:15 #5
-- og så skal jeg bare takke for point ;~}
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